[英]apply function ifelse summing up two columns
我想找到以下问题的解决方案,希望有人可以帮助我。 我有一个超过2000列的数据框,我只需要其中两个。 首先,我需要检查两列的总和(df $ values1 + df $ values2。)是否大于15。现在我想要一个结果列:如果是:15如果否:将第一列的值求和到第二列,以便df $ values1 + df $ values2。
我试图获得以下结果,但不起作用:
df$result <- apply(df[which(colnames(df)=="values1")],2,
function(x) {ifelse(df[which(colnames(df)=="values2")]+x >= 15, 15, df[which(colnames(df) == "values2")] + x)
}
)
谢谢!
如果我正确理解:
df$sumOfValues = pmin(df$values1 + df$values2, 15)
欢迎使用StackOverflow。
从现在开始,如果您想从这里获得任何帮助,请确保您发布可重复的问题。
首先,让我们看一下您的代码。
df$result <-
apply(df[which(colnames(df) == "values1")], 2, function(x) {
ifelse(df[which(colnames(df) == "values2")] + x >= 15,
15,
df[which(colnames(df) ==
"values2")] + x)
})
您的代码“说”:名为值1的DF如果任何值每列
values2
在df
+
中值values1
等于或大于15
,分配值15
,否则分配values2
+中的值values1
。
基本上,您是用向量替换单个数字,因此要返回一个列表。
提示:
1)不要使用which
来引用您的列。 而是使用df[,1]
或类似方法或df$values1
直接子集数据。
2)将功能应用于一维数据时,请勿使用apply
。
解决方案,或者上面的kgolyaev编写的示例 ,或者,如果您想使用ifelse
,则可以通过以下方法:
ifelse(df$values1 + df$values2 >= 15,
15, df$values1 + df$values2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.