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
相关产品推荐
相关产品推荐

