r - 将一个变量的值赋给另一个新变量
问题描述
我的数据在这里:
x <- data.frame("Year" = c(1945,1945,1945,1946,1946,1946, 1947,1947,1947), "Age" = c(1,2,3,1,2,3,1,2,3), "Value" = c(4,5,6,7,8,9,10,11,12))
我想将“年+1 和年龄+1”中的值分配给一个新变量。前任。对于 year =1945 和 age=1 的情况,我想将值 = 8(从 year = 1946,age =2 )分配给新变量。
我的理想结果是这样的:
x <- data.frame("Year" = c(1945,1945,1945,1946,1946,1946, 1947,1947,1947), "Age" = c(1,2,3,1,2,3,1,2,3), "Value" = c(4,5,6,7,8,9,10,11,12),"Year1moereandAge1more"= c(8,9,NA, 11, 12, NA, NA, NA,NA))
感谢您帮助初学者。
解决方案
使用修改后的自联接:
library(dplyr)
x %>%
transmute(Year = Year - 1, Age = Age - 1, Year1moereandAge1more = Value) %>%
right_join(x) %>%
arrange(Year, Age)
# Joining, by = c("Year", "Age")
# Year Age Year1moereandAge1more Value
# 1 1945 1 8 4
# 2 1945 2 9 5
# 3 1945 3 NA 6
# 4 1946 1 11 7
# 5 1946 2 12 8
# 6 1946 3 NA 9
# 7 1947 1 NA 10
# 8 1947 2 NA 11
# 9 1947 3 NA 12
推荐阅读
- outlook - TabDefault 是在功能区上放置组的唯一选项吗?
- java - 尝试添加条件语句
- ios - 从 .scn 文件加载后无法在 ARKit 场景中查看几何图形
- java - 尝试运行 sql 语句时当前光标位置的操作无效
- performance - 为什么在 Skylake-Xeon 上写入 2 个缓存行的一部分时,`_mm_stream_si128` 比 `_mm_storeu_si128` 慢得多?但对 Haswell 影响较小
- c# - 如何监视密封库类中的方法?
- liferay-7 - 在 porlet 级别禁用 SPA
- r - 如何跨列提取部分单元格值?
- android - 来自 onBindViewHolder 的 Navigation.createNavigateOnClickListener?
- javascript - 如何修复 React 中的“元素类型无效:预期为字符串...但得到:对象”错误