条件绑定 - 根据其他 2 个数据框中的值创建新数据框
Conditional bind - Create new data frame based on values in 2 other data frames
我有两个数据框如
df1 <- data.frame(Company = c('A','B','C','D','E','F'),
`X1980` = c(21,NA,53,57,11,26),
`X1981` = c(35,33,45,NA,NA,12))
df2 <- data.frame(Company = c('A','B','C','D','E','F'),
`X1980` = c(1,0,0,1,1,0),
`X1981` = c(1,1,1,0,1,0))
我想创建一个新的数据框 (df3),使公司列保持原样。 1980 年和 1981 年的值应取决于 df2 中的值:如果值为 1,则插入 df1 中的值,否则插入“NA”。生成的数据框应表示以下内容:
result df3
Company 1980 1981
A 21 35
B NA 33
C NA 45
D 57 NA
E 11 NA
F NA NA
感谢您的帮助!
如果我有任何改进问题的方法,请告诉我。
将df2
中的0
s改为NA
并相乘:
df2[df2 == 0] = NA
df2[-1] = df1[-1] * df2[-1]
df2
# Company X1980 X1981
# 1 A 21 35
# 2 B NA 33
# 3 C NA 45
# 4 D 57 NA
# 5 E 11 NA
# 6 F NA NA
这是有效的,因为 NA * x = NA
和 1 * x = x
。如果 df1
和 df2
,它依赖于相同顺序的列,但如果需要可以轻松调整。
我有两个数据框如
df1 <- data.frame(Company = c('A','B','C','D','E','F'),
`X1980` = c(21,NA,53,57,11,26),
`X1981` = c(35,33,45,NA,NA,12))
df2 <- data.frame(Company = c('A','B','C','D','E','F'),
`X1980` = c(1,0,0,1,1,0),
`X1981` = c(1,1,1,0,1,0))
我想创建一个新的数据框 (df3),使公司列保持原样。 1980 年和 1981 年的值应取决于 df2 中的值:如果值为 1,则插入 df1 中的值,否则插入“NA”。生成的数据框应表示以下内容:
result df3
Company 1980 1981
A 21 35
B NA 33
C NA 45
D 57 NA
E 11 NA
F NA NA
感谢您的帮助! 如果我有任何改进问题的方法,请告诉我。
将df2
中的0
s改为NA
并相乘:
df2[df2 == 0] = NA
df2[-1] = df1[-1] * df2[-1]
df2
# Company X1980 X1981
# 1 A 21 35
# 2 B NA 33
# 3 C NA 45
# 4 D 57 NA
# 5 E 11 NA
# 6 F NA NA
这是有效的,因为 NA * x = NA
和 1 * x = x
。如果 df1
和 df2
,它依赖于相同顺序的列,但如果需要可以轻松调整。