连接除R

时间:2018-05-22 19:58:51

标签: r paste

有没有办法连接除R?

中最后两个以外的所有前导列值

以下是我的数据框的片段

DISEASE Gender  Race    Freq    NEWCOL
Salmonellosis   M   RACE_LATINO_HISPANIC    1   NA
Salmonellosis   F   BLACK_AFRICAN_AMERICAN  2   NA
Salmonellosis   M   WHITE   3   NA
Salmonellosis   M   WHITE   4   NA

使用concatenate inexcel获得的期望结果

DISEASE Gender  Race    Freq    NEWCOL  Concat
Salmonellosis   M   RACE_LATINO_HISPANIC    1   NA  Salmonellosis M RACE_LATINO_HISPANIC
Salmonellosis   F   BLACK_AFRICAN_AMERICAN  2   NA  Salmonellosis F BLACK_AFRICAN_AMERICAN
Salmonellosis   M   WHITE   3   NA  Salmonellosis M WHITE
Salmonellosis   M   WHITE   4   NA  Salmonellosis M WHITE

我尝试在R中粘贴,但无法找到忽略最后两列的方法

此外,我的应用程序中的每次迭代都会更改列数,因此我需要一个忽略最后两列而不是选择几个前导列的函数

3 个答案:

答案 0 :(得分:3)

这不是一个优雅的解决方案,但是根据您的数据,您只需使用apply并通过动态引用列数传递data.frame,其中最后两列被删除

df = readr::read_table2("DISEASE Gender  Race    Freq    NEWCOL
Salmonellosis   M   RACE_LATINO_HISPANIC    1   NA
Salmonellosis   F   BLACK_AFRICAN_AMERICAN  2   NA
Salmonellosis   M   WHITE   3   NA
Salmonellosis   M   WHITE   4   NA")

df$Concat = apply(df[,1:(ncol(df)-2)],1,paste,collapse=" ")

答案 1 :(得分:2)

tidyr包有一个方便的<input>函数来执行此合并:

unite

答案 2 :(得分:1)

或者我们可以使用interaction

df$concat <- interaction(df[head(names(df), -2)], sep= " ")
来自paste

base R

df$concat <- do.call(paste, df[head(names(df), -2)])