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

R新手求助:如何从df.x提取数据并计算年度差值生成df.y

解决R语言数据提取与差值计算并合并的问题

嗨,我来帮你搞定这个R语言的数据处理需求!咱们一步步来,先从构造示例数据开始,再完成数据提取、差值计算,最后合并成你想要的df.y。

第一步:构造示例数据框

首先咱们先把你给出的df.x用R代码还原出来,方便后续操作:

# 构造示例数据框 df.x
df.x <- data.frame(
  Category = c("Apple", "Pear", "Banana", "Oranges"),
  "2019" = c(3, 3, 3, 3),
  "2020" = c(4, 4, 4, 4),
  "2021" = c(5, 5, 5, 5),
  "2022" = c(6, 6, 6, 6),
  "2023" = c(7, 7, 7, 7),
  stringsAsFactors = FALSE
)

第二步:提取Oranges的完整数据

咱们先把Oranges那一行的所有数据提取出来,并且把第一列的列名从Category改成Resource(和你想要的df.y格式匹配):

# 提取Oranges的整行数据
oranges_data <- df.x[df.x$Category == "Oranges", ]
# 重命名第一列
colnames(oranges_data)[1] <- "Resource"

第三步:计算Apple各年份的差值并构造数据

接下来处理Apple的差值:先取出Apple的年份数值,用diff()函数计算后一年减前一年的差值,再把这些差值对应到对应的年份列里(注意2023年没有后续年份,所以对应位置留空):

# 提取Apple的年份数值列(排除第一列的Category)
apple_values <- as.numeric(df.x[df.x$Category == "Apple", -1])
# 计算相邻年份的差值(2020-2019、2021-2020...)
apple_diff <- diff(apple_values)

# 构造Apple的差值数据框
apple_data <- data.frame(
  Resource = "Apple",
  "2019" = apple_diff[1],
  "2020" = apple_diff[2],
  "2021" = apple_diff[3],
  "2022" = apple_diff[4],
  "2023" = "",  # 没有2024年数据,所以留空
  stringsAsFactors = FALSE
)

第四步:合并数据得到最终的df.y

最后把刚才处理好的两部分数据合并起来,就得到你想要的df.y了:

# 合并两个数据框
df.y <- rbind(oranges_data, apple_data)

运行完所有代码后,你可以查看df.y的结果,和你期望的格式完全一致:

> df.y
  Resource 2019 2020 2021 2022 2023
4  Oranges    3    4    5    6    7
1    Apple    1    1    1    1     

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:13:13