![](/img/trans.png)
[英]R: Merge two data frames based on value in column and return all values of both data frames
[英]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.