簡體   English   中英

R 數據框 - 基於相鄰列值分配文本值

[英]R Data Frames - Assigning a Text Value Based on Adjacent Columns Values

我對 R 很陌生,我正在嘗試做一些我只能想象很簡單的事情,但我似乎無法讓它發揮作用。

我正在嘗試添加一個新列,它會根據數據框中已填充的四分位數值顯示:“第一四分位數”、“第二四分位數”等。 我認為這將是一個簡單的 if else 語句作業,但是我下面的代碼僅使用“第四四分位數”填充新列,並且當輸出所基於的列中有 NA 時填充“無值”。

我的代碼是:

Quartile_Apply <- function(row) { 
  One_Y_return <- row[10]

  if (is.na(One_Y_return)) {
    return("No Value")
  }

    if (One_Y_return <= 25 & One_Y_return > 0) {
      return("First Quartile")
    } else if (One_Y_return <= 50 & One_Y_return > 25) {
      return("Second Quartile")
    } else if (One_Y_return <= 75 & One_Y_return >50) {
      return("Third Quartile" )
    } else {
      return("Fourth Quartile")
    }
  }

df_Fund_Fee_Data$`1Y_Perf_Quartile` <- apply(df_Fund_Fee_Data, 1, Quartile_Apply)

View(df_Fund_Fee_Data)

row[10]部分旨在將 if 語句指向“1Y_Return_Percentile”列,四分位數將基於該列,即列號為 10,然后應用於數據框中的所有行。

我覺得這不應該那么復雜,我可能會遺漏一些非常明顯的東西,但我一直無法讓它發揮作用! 我還嘗試了一系列不同的代碼改編,所以我剛剛附上了我當前的工作狀態。

提前非常感謝,哈利

我認為你應該使用cut / findInterval

values <- paste(c("First", "Second", "Third", "Fourth"), "Quartile")

df_Fund_Fee_Data$`1Y_Perf_Quartile` <- cut(df_Fund_Fee_Data$`1Y_Return_Percentile`, 
                                       seq(0, 100, 25), labels = values)

或者

df_Fund_Fee_Data$`1Y_Perf_Quartile` <- values[findInterval(
          df_Fund_Fee_Data$`1Y_Return_Percentile`, seq(0, 100, 25))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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