【问题标题】:Reshape from long to wide according to the number of occurrence of one variable根据一个变量出现的次数从长到宽reshape
【发布时间】:2020-11-13 10:59:22
【问题描述】:

我的数据框看起来像这样

df1<-structure(list(person = c("a", "a", "a", "a", "b", "b", "b", 
"c"), visitID = c(123, 123, 256, 816, 237, 828, 828, 911), v1 = c(10, 
5, 15, 8, 95, 41, 31, 16), v2 = c(8, 72, 29, 12, 70, 23, 28, 
66), v3 = c(0, 1, 0, 0, 1, 1, 0, 1)), row.names = c(NA, -8L), class = c("tbl_df", 
"tbl", "data.frame"))

其中 person 是人员的姓名/ID,visitID 是为每次访问生成的数字。现在每次访问可能有一个或多个变量(v1v2v3)。我的问题是我正在尝试将案例聚合为具有广泛访问和变量的唯一行的结构转换为:

df2<-structure(list(person = c("a", "b", "c"), visit1 = c(123, 237, 
911), visit2 = c(256, 828, NA), visit3 = c(816, NA, NA), v1.visit1 = c("10,5", 
"95", "16"), v1.visit2 = c("15", "41,31", NA), v1.visit3 = c("8", 
NA, NA), v2.visit1 = c("8,72", "70", "66"), v2.visit2 = c("29", 
"23,28", NA), v1.visit3 = c("12", NA, NA), v3.visit1 = c("0,1", 
"1", "1"), v3.visit2 = c("0", "1,0", NA), v3.visit3 = c("0", 
NA, NA)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", 
"data.frame"))

到目前为止我尝试过的方法:
方法1:
1-根据“人”聚合所有其他变量,用逗号分隔
2-将变量拆分为多列
这种方法的问题是我不知道哪个变量对应哪个访问,特别是有些可能有多个条目,有些可能没有。

方法二:
1 - 每个visitID 的计数。取每个唯一人的最大访问次数(在上述情况下为 3)
2-为每个变量创建 3 列。 不知道如何从这里开始

我在线程Reshape three column data frame to matrix ("long" to "wide" format) 中找到了一个很好的答案 因此尝试使用 reshape 和 pivot_wider 解决,但无法使其正常工作。

即使没有产生相同的输出,任何想法都会受到赞赏。 谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以试试这样的:

    df1 %>% 
      group_by(person, visitID) %>% 
      summarise(across(matches("v[0-9]+"), list)) %>%
      group_by(person) %>%
      mutate(visit = seq_len(n()) %>% str_c("visit.", .)) %>%  
      ungroup() %>%
      pivot_wider(
        id_cols = person, 
        names_from = visit, 
        values_from = c("visitID", matches("v[0-9]+"))
      ) 
    

    如果你想在字符样式中使用list,请将list替换为~str_c(.x, collapse = ",")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 2019-05-04
      • 2018-12-21
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多