有没有一种方法可以将数据帧的行连接成单行

时间:2019-07-23 14:40:33

标签: r

我正在研究一些数据挖掘算法,并希望容纳一个数据框的元素(包含不同类型的向量)。

我已经尝试过,使用“ []”运算符对行进行子集设置,将其分配给多个向量,并使用逗号作为分隔符将它们粘贴在一起,结果是错误的。

实际DataFrame:

X   Y
1   1
2   2
3   3

所需结果:

 X      Y
"1,2,3"   "1,2,3"
"2"     "2"
"3"     "3"
X <- 1:4
Y <- 2:5
X <- as.data.frame(X)
Y <- as.data.frame(Y)
abc <- paste(X, Y, collapse = ",")

2 个答案:

答案 0 :(得分:0)

我认为这是您的数据:

df<-read.table(text = "X   Y
1   1
                       2   2",header=T)

,您将折叠列并将其保存在第一行。 以下代码将各列合并在一起

apply(df,2,function(x){paste(x,collapse = ",")})

您可以将结果保存在第一行

df[1,]=apply(df,2,function(x){paste(x,collapse = ",")})

df
    X   Y
1 1,2 1,2
2   2   2

或者,如果您要合并行并将其保存在列中:

    X <- 1:4
Y <- 2:5
df <- data.frame (X,Y)
df[,(ncol(df)+1)]=apply(df,1,function(x){paste(x,collapse = ",")})
df
  X Y  V3
1 1 2 1,2
2 2 3 2,3
3 3 4 3,4
4 4 5 4,5

答案 1 :(得分:0)

您可以使用以下函数将行连接起来。

concatenate<-function(m){
for(i in 2:nrow(m)){
vector<-m[1,]
vector<-paste(vector,m[i,],sep = ",")
}
return(vector)
}

m<-as.data.frame(matrix(c(1,1,1,1),nrow = 2))

concatenate(m)

[1] "1,1" "1,1"

但是,您将丢失所有数据类型。