连接R中除最后两列以外的所有列
除了R中的最后两个值外,是否有方法连接所有前导列值 下面是我的数据框架的一个片段连接R中除最后两列以外的所有列,r,paste,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 N
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
使用CONTAINATE 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中粘贴,但找不到忽略最后两列的方法
此外,在我的应用程序中,列的数量会随着每次迭代而变化,因此我需要一个函数,该函数忽略最后两列,而不是选择两个前导列。这不是一个优雅的解决方案,但考虑到您的数据,您只需使用
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=" ")
tidyr软件包有一个方便的
unite
函数来执行此合并:
df<-read.table(header = TRUE, text="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")
library(tidyr)
answer<-unite(df, concat, -c("Freq", "NEWCOL"), sep = " ", remove=FALSE)
#or to select by only the number of columns
unite(df, concat, 1:(ncol(df)-2), sep = " ", remove=FALSE)
df或者我们可以使用交互
df$concat <- interaction(df[head(names(df), -2)], sep= " ")
你是不是在试着df$Concat是的,我是,但问题是,就这个例子而言,它是疾病、性别和种族的Concat;在下一个例子中,它可能只是疾病和性别,这是因为此代码是闪亮应用程序的一部分,用户在其中进行选择,结果被聚合,然后可能df$Concat,那么tidyr
中的unite
功能是否有用:df
df$concat <- do.call(paste, df[head(names(df), -2)])