[英]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.