将值从一个变量分配给另一个新变量

时间:2020-11-02 16:39:07

标签: r variable-assignment

我的数据在这里:

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))

我想将“ year + 1和age +1”中的值分配给新变量。例如对于年份= 1945和年龄= 1的情况,我想将值= 8(从年份= 1946,年龄= 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))

谢谢您对初学者的帮助。

1 个答案:

答案 0 :(得分:0)

使用修改后的自我联接:

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