R 将一列粘贴到数据帧中的每一列
我有很多列,我需要将第一列粘贴到其他每一列中。它看起来像这样,除了实际的单词而不是字母,还有几百列R 将一列粘贴到数据帧中的每一列,r,R,我有很多列,我需要将第一列粘贴到其他每一列中。它看起来像这样,除了实际的单词而不是字母,还有几百列 TEST0 TEST1 TEST2 TEST3 TEST4 1 Q1: AA AA AA AA AA AA BB BB BB 2 Q2: 3 Q3: BB BB B
TEST0 TEST1 TEST2 TEST3 TEST4
1 Q1: AA AA AA AA AA AA BB BB BB
2 Q2:
3 Q3: BB BB BB CC CC CC CC CC CC CC CC CC
4 Q4: DD DD DD DD DD DD DD DD DD
我可以将第一列粘贴到另一列中,一次粘贴一列,具体操作如下:
paste(test[,2],test[,3])
[1] "Q1: AA AA AA" "Q2: " "Q3: BB BB BB" "Q4: DD DD DD "
paste(test[,2],test[,4])
[1] "Q1: AA AA AA " "Q2: " "Q3: CC CC CC " "Q4: "
但是有没有一种方法可以同时处理多个列呢?谢谢这里有一种使用
dplyr
的方法。首先创建自己的粘贴功能:
df <- data.frame(A = LETTERS, B = 1:26, C = 1:26)
head(df)
A B C
1 A 1 1
2 B 2 2
3 C 3 3
4 D 4 4
5 E 5 5
pasteA <- function(., x) paste0(df$A,.)
df %>%
mutate_if(.predicate = c(F, rep(T, ncol(df)-1)), .funs = list(pasteA))
A B C
1 A A1 A1
2 B B2 B2
3 C C3 C3
4 D D4 D4
5 E E5 E5
df这是一个基本解决方案,带有for
循环。对于每个目标列,粘贴
它的第一列
df <- data.frame(a = letters[1:5], b = 1:5, c = 5:1)
for (i in 2:length(df)) {
df[[i]] <- paste(df[[1]], df[[i]], sep = ": ")
}
对于这种情况,{dplyr}令人惊讶地令人费解。一个更简单的解决方案是使用lappy
(这是因为data.frame
s是列的列表):
您可以尝试使用循环结构。交叉发布:
a b c
1 a a: 1 a: 5
2 b b: 2 b: 4
3 c c: 3 c: 3
4 d d: 4 d: 2
5 e e: 5 e: 1
as.data.frame(lapply(test[-1], function (x) paste(test[[1]], x)))