我对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