簡體   English   中英

應用函數ifelse總結兩列

[英]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如果任何值每列values2df +中值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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM