2013-08-22 222 views
0

我有兩個數據幀。第一個數據幀的值介於0和1之間。10行(Person),15列(變量)。第二個數據框給我百分比排名限制。第一排以5%的步幅爲0%至100%。我想完成的是(示例)在同名df2的列中搜索第一列df1的第一個值,並將值替換爲column1的百分比值。搜索算法必須類似於如果df1value <= df2valuedf1value isnot <= df2value(行+1)然後df1value = df2percentrank。我正在尋找幫助幾個小時,並找不到解決方案的任何提示,所以很遺憾沒有我可以提供的代碼。用另一個數據幀的百分比值替換數據幀值

DF1: 
V1|V2|V3 
12|40|80 

DF2: 
PR|V1|V2|V3 
0%|0|0|0| 
50%|13|60|30 
100%|60|100|70| 

Output: 
V1|V2|V3 
0%|0%|100% 
+2

您將得到更好的幫助,如果你提供一個最小您的輸入數據和預期輸出的可重現示例。 – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto是對的。提供您的數據框架以及您期望獲得的輸出結果。您可以使用R中的dput命令創建用於創建數據框的基礎R代碼。 –

+0

快速瀏覽一下你的描述,可以發現你可以從基本R或者IRanges包中看到'cut' +'merge'或'match'。 – A5C1D2H2I1M1N2O1R2T1

回答

0

這是最有可能沒有做到這一點的最好辦法,但它是什麼浮現在腦海,當我第一次看到這樣的問題:

setNames(data.frame(lapply(1:3, function(x) { 
    cut(df1[[x]], c(df2[[x+1]], Inf), labels=df2[[1]]) 
})), names(df1)) 
# V1 V2 V3 
# 1 0% 0% 100% 
相關問題