gpt4 book ai didi

r - 如何使用 R 将两个或多个变量转换(计算)为一个?

转载 作者:行者123 更新时间:2023-11-30 08:52:24 25 4
gpt4 key购买 nike

我在合并数据中的两个或多个变量时遇到一些困难。我可以在 Excel 中执行此操作,但不知道如何在 R 中执行相同的操作。

基本上我想使用以下变量创建两个组合变量:

Data1:创建变量CombineA+B

country  year       A1         B1        **combineA1+B1**
USA 2002 0 0 0
USA 2003 1 1 2
USA 2004 NA 1 1
USA 2005 0 0 0
USA 2006 0 1 1
USA 2007 0 0 0
USA 2008 0 1 1
USA 2009 NA NA NA
USA 2010 0 1 1
USA 2011 NA 0 0
USA 2012 0 1 1
USA 2013 0 0 0
USA 2014 0 1 1

创建变量“combineA1+B1”看起来很简单,我所需要做的就是添加这两个变量(A1 和 B1)。在 Excel 中这非常简单,我想在 R 中也是如此。然而,当添加这两个变量时,NA 值会产生问题。那么,如何创建像上面那样的组合 A1+B1 变量?

如果A1和B1都有NA,那么combineA1+B1也应该有NA。如果一个具有 NA 值,另一个具有 1 或 0 值,则应给出相应的数字(参见 ex USA 2004)。

我还想创建另一个组合变量:“combineA1+B1+C1+D1”

数据2:创建变量“combineA1+B1+C1+D1”

country year    A1  B1  C1  D1  combineABCD
USA 2002 0 0 0 0 0
USA 2003 1 1 0 0 2
USA 2004 NA 1 0 0 1
USA 2005 0 0 0 0 0
USA 2006 0 1 0 0 1
USA 2007 0 0 0 0 0
USA 2008 0 1 1 0 2
USA 2009 NA NA NA NA NA
USA 2010 0 1 1 0 2
USA 2011 NA 0 0 0 0
USA 2012 0 1 1 0 2
USA 2013 0 0 0 0 0
USA 2014 0 1 1 0 2

我想一旦我知道如何创建第一个组合变量,我也能做到这一点。虽然我不确定如何处理所有这些 NA?

感谢您提出的所有建议来正确添加这些变量。

最佳答案

经过一些搜索,我发现了 this article 。我不接受此代码的功劳。

mysum <- function(x) if (all(is.na(x))) NA else sum(x, na.rm=T) 
df$combinedA1B1 <- apply(df[, c("A1", "B1")], 1, mysum)

df
# country year A1 B1 combinedA1B1
# 1 USA 2002 0 0 0
# 2 USA 2003 1 1 2
# 3 USA 2004 NA 1 1
# 4 USA 2005 0 0 0
# 5 USA 2006 0 1 1
# 6 USA 2007 0 0 0
# 7 USA 2008 0 1 1
# 8 USA 2009 NA NA NA
# 9 USA 2010 0 1 1
# 10 USA 2011 NA 0 0
# 11 USA 2012 0 1 1
# 12 USA 2013 0 0 0
# 13 USA 2014 0 1 1

关于r - 如何使用 R 将两个或多个变量转换(计算)为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35227308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com