我想为以下问题找到解决方案,希望有人能帮助我。 我有一个超过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)
}
)
谢谢!
答案 0 :(得分:2)
如果我理解正确的话:
df$sumOfValues = pmin(df$values1 + df$values2, 15)
答案 1 :(得分:0)
欢迎使用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)
})
您的代码“说”:对于df中每个名为values1的列,如果有任何值
values2
df
+
values1
中15
的值等于或大于15
比values2
,分配值values1
,否则分配which
+值 在df[,1]
。
基本上,您正在用向量替换单个数字,因此您将返回一个列表。
提示:
1)请勿使用df$values1
来引用您的列。相反,可以使用apply
或类似内容或ifelse
直接对数据进行子集化。
2)在1维数据上应用函数时,请勿使用ifelse(df$values1 + df$values2 >= 15,
15, df$values1 + df$values2)
。
解决方案,或者上面的 kgolyaev 编写的示例,或者,如果您想使用xcode-select --install
,可以选择:
{{1}}