这个问题与以前的帖子略有不同。我有几列随机指标变量,我想将它们合并为一个序列“没有空格”。我的数据如下。
ID COL1 COL2 COL3 COL4 COL5 COL6 COL7
1 1 a b c d e f g
2 2 a b c d e f g
3 3 a b c d e f g
4 4 a b c d e f g
5 5 a b c d e f g
6 6 a b c d e f g
7 7 a b c d e f g
8 8 a b c d e f g
ID<-c(1,2,3,4,5,6,7,8)
COL1<-c('a','a','a','a','a','a','a','a')
COL2<-c('b','b','b','b','b','b','b','b')
COL3<-c('c','c','c','c','c','c','c','c')
COL4<-c('d','d','d','d','d','d','d','d')
COL5<-c('e','e','e','e','e','e','e','e')
COL6<-c('f','f','f','f','f','f','f','f')
COL7<-c('g','g','g','g','g','g','g','g')
df<-data.frame(ID,COL1,COL2,COL3,COL4,COL5,COL6,COL7)
我想要一个列来简单地合并其他列而没有空格。
ID COL1 COL2 COL3 COL4 COL5 COL6 COL7 col1to4 col1to7 col3to5
1 1 a b c d e f g abcd abcdefg cde
2 2 a b c d e f g abcd abcdefg cde
3 3 a b c d e f g abcd abcdefg cde
4 4 a b c d e f g abcd abcdefg cde
5 5 a b c d e f g abcd abcdefg cde
6 6 a b c d e f g abcd abcdefg cde
7 7 a b c d e f g abcd abcdefg cde
8 8 a b c d e f g abcd abcdefg cde
提前致谢。
答案 0 :(得分:0)
df$col1to4 = apply(df[ , grep("COL[1-4]", names(df))], 1, paste, collapse="")
或
df$col1to4 = apply(df[, paste0("COL", 1:4)], 1, paste, collapse="")
第一个使用正则表达式并且更灵活,但如果您的名字非常规则,您可以使用第二个保存一些键入。您也可以按位置引用列,但这似乎更容易出错。
其他人也一样:
df$col1to7 = apply(df[ , grep("COL[1-7]", names(df))], 1, paste, collapse="")
df$col3to5 = apply(df[ , grep("COL[3-5]", names(df))], 1, paste, collapse="")
答案 1 :(得分:0)
这应该有效:
df$col1to4<-paste0(df$COL1,df$COL2,df$COL3,df$COL4)
df$col1to7<-paste0(df$COL1,df$COL2,df$COL3,df$COL4,df$COL5,df$COL6,df$COL7)
df$col3to5<-paste0(df$COL3,df$COL4,df$COL5)