繁体   English   中英

在 R 中将跨多个变量的分散信息折叠为 1

[英]Collapsing scattered information across multiple variables into 1 in R

我有一些表数据分散在数据集中的大约 1000 个变量中。 大多数都分为 2 个变量,我可以使用合并将数据拼凑在一起,但是对于某些分布在 10 以上的变量来说,这效率很低。 有没有更好/更有效的方法?

到目前为止我写的语法是:

scattered_data <- df %>%
select(id, contains("MASS9A_E2")) %>% 
#this brings in all the variables for this one question that start with this string
mutate(speciality = coalesce(MASS9A_E2_C4_1,MASS9A_E2_C4_2,MASS9A_E2_C4_3, MASS9A_E2_C4_4, MASS9A_E2_C4_5, MASS9A_E2_C4_6, MASS9A_E2_C4_7, MASS9A_E2_C4_8, MASS9A_E2_C4_9, MASS9A_E2_C5_1,MASS9A_E2_C5_2,MASS9A_E2_C5_3, MASS9A_E2_C5_4, MASS9A_E2_C5_5, MASS9A_E2_C5_6, MASS9A_E2_C5_7, MASS9A_E2_C5_8, MASS9A_E2_C5_9))

因为我有 28 个 MASS 问题,我真的很想能够更快地解决这些问题。

您可以使用do.call()将除id之外的所有列作为coalesce()输入。

library(dplyr)

df %>%
  select(id, contains("MASS9A_E2")) %>%
  mutate(speciality = do.call(coalesce, select(df, -id)))

此外,您可以通过Reduce()迭代调用coalesce() Reduce()

df %>%
  select(id, contains("MASS9A_E2")) %>%
  mutate(speciality = Reduce(coalesce, select(df, -id)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM