微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

条件绑定-根据其他2个数据框中的值创建新数据框

如何解决条件绑定-根据其他2个数据框中的值创建新数据框

我有两个数据帧,例如

df1 <- data.frame(Company = c('A','B','C','D','E','F'),`X1980` = c(21,NA,53,57,11,26),`X1981` = c(35,33,45,12))
df2 <- data.frame(Company = c('A',`X1980` = c(1,1,0),`X1981` = c(1,0))

我想创建一个新的数据框(df3),将company列保持原样。 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

感谢您的帮助! 如果我有什么办法可以改善这个问题,那就告诉我。

解决方法

0中的df2更改为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 = NA1 * x = x。如果df1df2依赖于相同的列顺序,但是如果需要可以很容易地进行调整。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?