我有以下数据集:
Class Range Value
A 6 - 8 19
B 1 - 3 14
C 5 - 16 10
D 4 - 7 5
我想将每个类别的范围分成两列。为此,我使用了该函数str_split_fixed
如下:
merge(data, str_split_fixed(data[, 2], " - ", 2))
我什至尝试过:
merge(data, str_split_fixed(data$Range, " - ", 2))
但他们都给了我以下结果:
Class Range Value V1 V2
A 6 - 8 19 6 8
B 1 - 3 14 6 8
C 5 - 16 10 6 8
D 4 - 7 5 6 8
我的问题是,为什么它会为其余课程重复第一个范围?有人可以帮忙吗?
的输出str_split_fixed
是一个两列matrix
(没有暗名),当我们做一个merge
在不指定列名的情况下,它会执行交叉连接。代替merge
,我们可以使用cbind
或分配给两列
data[c('V1', 'V2')] <- str_split_fixed(data[, 2], " - ", 2)
注意:输出str_split
是元素与character
类型。它可能需要转换为numeric
一个更简单的选择是separate
library(tidyverse)
data %>%
separate(Range, into = c("V1", "V2"), convert = TRUE)
# Class V1 V2 Value
#1 A 6 8 19
#2 B 1 3 14
#3 C 5 16 10
#4 D 4 7 5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)