我有一些来自维基百科的数据:
RHCP_data
V1 V2 V3 V4
1 bar:kiedis from:01/01/1983 till:01/11/1986 color:vocals
2 bar:kiedis from:01/12/1986 till:end color:vocals
3 bar:flea from:01/01/1983 till:end color:bass
4 bar:smith from:03/12/1988 till:end color:drums
5 bar:klinghoffer from:01/10/2009 till:end color:lead
6 bar:slovak from:01/01/1983 till:01/12/1983 color:lead
7 bar:slovak from:01/02/1985 till:25/06/1988 color:lead
...
...
我试图用来tidyr
删除变量名,这很好用:
separate(RHCP_data, "V1", into = c("a", "b"), sep = ":")[2]
b
1 kiedis
2 kiedis
3 flea
4 smith
5 klinghoffer
6 slovak
7 slovak
...
...
我想了解为什么这不起作用。
for(i in 1:4){
RHCP_data[,i] <- separate(RHCP_data, paste0("V", i), into = c("a", "b"), sep = ":")[2][,1]
}
我得到这个错误:
Error: Invalid column specification
显然,数据集很小,因此在这种情况下这不是问题,但我觉得有些事情tidyr
或循环是我不了解的。任何帮助表示赞赏。
要将列作为变量传递,您需要使用separate_
而不是separate
。
如果要使用for循环,我建议:
lst = lapply(seq(ncol(df)), function(x) {
separate_(df, paste0('V', x), into = paste0(c("a", "b"), x), sep = ":")[x:(x+1)][,2]
})
data.frame(setNames(lst, names(df)))
# V1 V2 V3 V4
#1 kiedis 01/01/1983 01/11/1986 vocals
#2 kiedis 01/12/1986 end vocals
#3 flea 01/01/1983 end bass
#4 smith 03/12/1988 end drums
#5 klinghoffer 01/10/2009 end lead
#6 slovak 01/01/1983 01/12/1983 lead
#7 slovak 01/02/1985 25/06/1988 lead
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句