【发布时间】:2023-03-27 11:33:01
【问题描述】:
我有两个数据框,一个由称为“esame”的数值组成:
media id_poll fin
1 5.330000e+00 360 1
2 6.833333e-02 361 0
3 0.000000e+00 362 0
4 NA 363 0
5 8.200000e-01 364 0
6 3.416667e-01 365 0
7 0.000000e+00 366 0
8 0.000000e+00 367 0
9 0.000000e+00 368 0
10 NA 369 0
11 6.150000e-01 370 0
12 0.000000e+00 371 0
13 0.000000e+00 372 0
14 NA 373 0
15 0.000000e+00 374 0
16 0.000000e+00 375 0
17 0.000000e+00 376 0
18 1.298333e+00 377 0
第二个由数字范围组成,我想用它来检查第一个 data.frame 的“媒体”字段在哪个范围内。 如果它在第一个范围内,我想将“1”分配给第一个 data.frame 的字段“fin”,如果它在第二个范围内,我想分配“2”等等。
所以这是第二个 data.frame,其中包含我需要的一些条件:
Range1 Range2 Range3 Range4 ID
0.5 9.9 29.9 >30 360
0.5 15.9 49.9 >50 361
0 4.9 24.9 >25 362
首先我想我不需要声明 Range4,因为它已经是 Range3 中包含的信息。我删除了所有数字范围的初始值,因为我只需要一个数字来检查(或者我认为)。 ID 360 的同一行可以写成:
Range1 Range2 Range3 Range4 ID
0.5 0.6-9.9 10-29.9 >30 360
所以我的猜测是做这样的事情:
esame$fin<-ifelse (esame$media<0.6 & datofinale$id_poll=="360", "1", "0")
我可以用另一个“ifelse”语句替换“0”值并手动继续。 有没有更快的方法来做到这一点? (包含所有条件的列表实际上比示例大得多)。
感谢您的建议。
【问题讨论】: