如何基于共享值在R中合并数据集中的行



我对R还很陌生,所以很抱歉这个问题太天真了,但:
我想根据一个特定列中的重复值垂直合并数据帧中的多行。

我当前的数据帧看起来像:

公共有点非常
上下文 问题ID 评分
1 Q1第1项
1 Q2Item1 相当多
1 第三季度第1项
2 Q1第2项 非常
2 Q2第2项
2 第三季度第2项 非常

这是一个简单的pivot_wider问题,前后都有一些清理,如果您很难理解,只需单独运行这些步骤。让我知道这是否有效。

library(tidyverse)
read.table(text = "Context|Question ID | Rating
1 | Q1Item1 | Public
1 | Q2Item1 | Quite_a_bit
1 | Q3Item1 | Somewhat
2 | Q1Item2 | Very
2 | Q2Item2 | Very
2 | Q3Item2 | Very", sep = "|", header = TRUE) %>%
mutate(across(everything(), str_trim),
Context = as.integer(Context)) %>%
as_tibble() %>%
group_by(Context) %>%
mutate(var = str_c("Question_ID", row_number())) %>%
ungroup() %>%
pivot_wider(names_from = var, values_from = c(Question.ID, Rating)) %>%
rename_with(~str_remove(., "^Question.ID_|_Question_")) %>%
relocate(Context, ends_with(as.character(seq(3))))

# # A tibble: 2 × 7
#   Context Question_ID1 RatingID1 Question_ID2 RatingID2   Question_ID3 RatingID3
#     <int> <chr>        <chr>     <chr>        <chr>       <chr>        <chr>    
# 1       1 Q1Item1      Public    Q2Item1      Quite_a_bit Q3Item1      Somewhat 
# 2       2 Q1Item2      Very      Q2Item2      Very        Q3Item2      Very  

最新更新