![](/img/trans.png)
[英]For loop to extract data scattered across multiple columns in another R dataframe
[英]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.