我在 R 中有一个 df,这是一个简化版本:
ID <- c("AA1", "AA2","AA3","AA4","AA5")
Pop <- c("AA","AA","AA","AA","AA")
abc08 <- c(2,1,2,0,2)
...4 <- c(3,4,4,0,3)
abc11 <- c(2,2,2,2,1)
...5 <- c(3,4,4,4,3)
df <- data.frame(ID, Pop, abc08, ...4, abc11, ...5)
df
我想将以“abc”开头的列与其后续列合并,使 df 看起来像这样:
ID <- c("AA1", "AA2","AA3","AA4","AA5")
Pop <- c("AA","AA","AA","AA","AA")
abc08 <- c("2-3","1-4","2-4",NA,"2-3")
abc11 <- c("2-3","2-4","2-4","2-4","1-3")
df <- data.frame(ID, Pop, abc08, abc11)
df
我原来的 df 有更多的列,所以我正在寻找一种通用的方法。到目前为止,我的代码如下所示:
df %>% mutate(across(starts_with("abc"),
~ case_when(. > 0 ~ paste(., "content of subsequent column", sep = "-"),
. == 0 ~ NA_character_
)))%>%
select(!starts_with("..."))
其中“后续列的内容”显然需要标识“.”之后的列。我不能成为第一个遇到这个问题的人,但我已经搜索了几个小时而没有找到任何地方......