通过调节并从另一个数据帧获取值进行变异

问题描述 投票:0回答:0

我正在尝试使用 dplyr 解决 R 中的以下问题: 我有两个数据框。 在第一个数据框中,我有 ID,对于每个 ID,我都有一个排名和另一列带有数值。 data_frame_1

#  ID  ranking  value  
#  1    0        0.25  
#  2    2        0.5
#  3    1        0.3

另一个数据框有点像一个矩阵,它在列和行上的排名从 0:2 开始,并包含数值。 data_frame_2

#  0    1       2
0  0.5  0.3     0.2  
1  0.4  0.22    0.1
2  0.4  0.3     0.27

我的行也包含排名,所以行名<-c(0:2) What I want to do is: ID 1 has ranking 0. I want to look up if the ranking is correct, by looking in the other dataframe: since ID1 has ranking 0 I want to look in the row with name "0" and say if value>=行中的条目,然后给出新的排名,即列名。 所以我想做的是改变我的第一个 data_frame 上的新排名

我试过这样的事情: data_frame_1%>%mutate(new_ranking=case_when(value>=data_frame_2["ranking",])~colnames[which(value>=data_frame_2["ranking",])].

我希望得到的结果是这样的:

 # ID  ranking  value  new_ranking
 #  1    0      0.25    2
 #  2    2      0.5     0
 #  3    1      0.3     1

我知道这不是解决问题的正确方法。

有人能解决这个问题吗?

r dplyr case mutate
© www.soinside.com 2019 - 2024. All rights reserved.