You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中基于名称值重塑多列数据的技术咨询

解决方案

可以使用tidyverse工具包完成数据整理,步骤如下:

1. 加载依赖包

首先加载处理数据所需的工具包:

library(tidyverse)

2. 提取排名(ranks)数据

将原数据中prop1/prop2与对应的prop1_rank/prop2_rank转换为长格式,过滤缺失值并重命名列:

rank_data <- Df %>%
  select(prop1, prop1_rank, prop2, prop2_rank) %>%
  pivot_longer(
    cols = everything(),
    names_to = c("group", ".value"),
    names_pattern = "(prop\\d)_(.*)"
  ) %>%
  filter(!is.na(prop)) %>%
  rename(propositions = prop, ranks = rank) %>%
  select(-group)

3. 提取频率(freqs)数据

处理initOSF1/initOSF2与对应频率列,同时对重复的类别去重(同一类别的频率值一致):

freq_data <- Df %>%
  select(initOSF1, initOSF1_freq, initOSF2, initOSF2_freq) %>%
  pivot_longer(
    cols = everything(),
    names_to = c("group", ".value"),
    names_pattern = "(initOSF\\d)_(.*)"
  ) %>%
  filter(!is.na(initOSF)) %>%
  rename(propositions = initOSF, freqs = freq) %>%
  select(-group) %>%
  distinct(propositions, .keep_all = TRUE)

4. 合并数据得到最终结果

将排名数据与频率数据按类别关联,得到目标三列数据框:

final_df <- rank_data %>%
  left_join(freq_data, by = "propositions") %>%
  arrange(propositions)

执行后得到的结果如下:

> final_df
   propositions ranks freqs
1        French     0    66
2        French    40    66
3          Rock     1    14
4          Rock     2    14
5           Pop     1    14
6           Pop     2    14
7        Spanish    10     0
8        Spanish     1     0
9  -19 to -10      4     6
10 -19 to -10      0     6
11 -29 to -20     11     0
12 -29 to -20      0     0

内容的提问来源于stack exchange,提问作者Hanbin Go

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:27:38