数据集汇总与重塑:按ID提取指定PainScoreOrder的得分列
我来帮你搞定这个需求!针对你给出的tibble数据集,用tidyverse工具包就能轻松生成你要的汇总表,具体代码和步骤如下:
首先先确认你的原始数据:
temp # A tibble: 9 x 3 ID PainScore PainScoreOrder <int> <int> <chr> 1 1 4 First 2 1 2 Middle 3 1 3 Middle 4 1 3 Last 5 2 9 First 6 2 8 Last 7 3 7 First 8 3 4 Middle 9 3 5 Last
接下来是处理代码:
# 先加载tidyverse包(如果还没加载的话) library(tidyverse) # 生成汇总表 summary_table <- temp %>% # 过滤掉所有PainScoreOrder为"Middle"的记录 filter(PainScoreOrder != "Middle") %>% # 将长格式数据转为宽格式,每个ID占一行 pivot_wider( id_cols = ID, # 以ID作为唯一分组标识 names_from = PainScoreOrder, # 用PainScoreOrder的取值作为新列名 values_from = PainScore # 用对应的PainScore填充新列 ) # 查看最终结果 summary_table
运行后得到的汇总表如下:
# A tibble: 3 x 3 ID First Last <int> <int> <int> 1 1 4 3 2 2 9 8 3 3 7 5
简单解释下逻辑:
- 先用
filter去掉不需要的"Middle"记录,只保留我们关心的First和Last条目; - 再用
pivot_wider把数据从长格式转成宽格式,自动按ID分组,把First和Last对应的分数分别放到单独的列里,完美符合你的要求。
内容的提问来源于stack exchange,提问作者Jeff Jarvis
相关产品推荐
相关产品推荐

