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

R语言中如何将Site转为列并按行排列数值?是否需用pivot_longer?

解决方法:不需要用pivot_longer,调整pivot_wider即可

你要做的是长表转宽表,pivot_wider是正确的工具,但当前问题是原始数据里没有给每个Site下的数值分配行标识,导致pivot_wider不知道该把多个值拆到不同行中。只需先给每个Site分组,添加组内的行序号,再用pivot_wider就能得到你想要的格式。

修正后的代码:

library(tidyverse)

# 构造原始数据
matrix <- as.data.frame(matrix(c(1982,1923,3445,2345,12345,1234,"Site1","Site2","Site2","Site1","Site2","Site3"), nrow=6,ncol=2))

# 按Site分组添加行号,再转宽表
result <- matrix %>%
  group_by(V2) %>%
  mutate(row_id = row_number()) %>%
  ungroup() %>%
  pivot_wider(names_from = V2, values_from = V1) %>%
  select(-row_id) # 移除临时行号列

print(result)

运行后得到的结果与你期望的一致(R中空值显示为NA,若要转为空字符串,可追加replace(result, is.na(result), "")处理):

Site1Site2Site3
198219231234
23453445NA
NA12345NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:34:59