您是否可以帮助我为数据框添加不同数量的行列?
例如,我有此DataFrame:
employee <- c('John','Peter','Jolie', 'Katy', 'Pauline')
numberofmonths <- c(7, 5, 11, 3, 12)
employers <- data.frame(employee,numberofmonths)
employee numberofmonths
1 John 7
2 Peter 5
3 Jolie 11
4 Katy 3
5 Pauline 12
现在,我想将employers
“雇员”名称所包含的字符添加到尽可能多的列中。
所以我想要这样的事情:
employee numberofmonths i i i i i i i
1 John 7 A1 A2 A3 A4 NA NA NA
2 Peter 5 A1 A2 A3 A4 A5 NA NA
3 Jolie 11 A1 A2 A3 A4 A5 NA NA
4 Katy 3 A1 A2 A3 A4 NA NA NA
5 Pauline 12 A1 A2 A3 A4 A5 A6 A7
我已经尝试过以下脚本:
for (i in (1:nrow(employers))) {
for (j in nchar(as.vector(employers[i,]$employee))){
employers<-cbind(employers, i=paste("A", i, sep=""))
}}
但是,与其给约翰和A1:A7而不是给Pauline A1:A4,而是为所有这些都给A1:A5:
employee numberofmonths i i i i i
1 John 7 A1 A2 A3 A4 A5
2 Peter 5 A1 A2 A3 A4 A5
3 Jolie 11 A1 A2 A3 A4 A5
4 Katy 3 A1 A2 A3 A4 A5
5 Pauline 12 A1 A2 A3 A4 A5
当然,对于字符数少于其他字符的名称,我们将在其中添加一些列NA
。我正在处理带有很多字符串的大数据框,因此任何手动操作都可以使用。这仅是示例,因此Ai值没有任何意义。
可能不是最好的解决方案,但它可行
employee <- c('John','Peter','Jolie', 'Katy', 'Pauline')
numberofmonths <- c(7, 5, 11, 3, 12)
employers <- data.frame(employee,numberofmonths)
max = max(nchar(as.character(employers[,1])))
for (c in 1:max) {
employers[,c+2] = ifelse(nchar(as.character(employers[,1]))>=c, paste0("A",c), NA)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句