【问题标题】:Collapsing scattered information across multiple variables into 1 in R将跨多个变量的分散信息折叠为 R 中的 1
【发布时间】:2020-09-16 15:06:18
【问题描述】:

我有一些表格数据分散在数据集中的大约 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 问题,我真的很想能够更快地把它们折叠起来。

【问题讨论】:

  • 嗨,我的回答对你有用吗?
  • 对不起,我还没有设法实现它,因为我已经赶上了别的东西,但我今天应该尝试一下。谢谢
  • 谢谢,您的回答正是我所需要的

标签: r dplyr data-cleaning coalesce


【解决方案1】:

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

library(dplyr)

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

另外,你可以通过Reduce()迭代调用coalesce()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多