我有一个包含150列的数据集,其中列被命名为Qa101到Qa150,Qb101到Qb150和Qc101到Qc150。计划是将名称的最后三个字符(例如,101)共享的列合并,并且每3个共享最后三个字符(例如,Qa101,Qb101和Qc101)的列只有一个,应该合并为Q101。的列是数值,并且可以确定的是,共享最后三个字符的这三列中只有一列保存值,并且另外两列是NA,例如Qa101保存值,Qb101和Qc101是NA,等等。我希望找到一个tidyverse
的解决方案,但在这个阶段会解决任何事情。
我已经尝试了不同的不成功的方法使用dplyr函数,如:
data.test <- data %>%
mutate(across(where(~ str_match(., start = -3))),
unite(remove = TRUE, na.rm = TRUE), .keep = "none")
字符串
但这显然是错的
1条答案
按热度按时间k5ifujac1#
如所述:
可以肯定的是,这三列中只有一列共享最后三个字符(例如,
Qa101
、Qb101
、Qc101
)持有一个值,另外两个是NA。我创建了一个最小的示例数据集:
字符串
解决方案
您可以在列组上使用
pivot_longer()
,然后使用summarise()
来保留行ID中唯一的非缺失值。型