【发布时间】:2013-11-17 03:35:05
【问题描述】:
这可能是一个非常简单的问题,但我很难弄清楚,即使浏览了许多类似的帖子。
我有两个数据框,dvalues 和 svalues。
dvalues:
district districtID value state
Badgam 1002 30.2 N/A
Pulwama 1012 10.9 N/A
Kangra 2002 10.2 N/A
Amritsar 3015 29.8 N/A
...
和svalues:
state stateID
Jammu & Kashmir 1000
Himachal Pradesh 2000
Punjab 3000
....
我想在每行的状态列中添加一个值,条件是 districtID 值介于两个 stateID 值之间。
例如,由于 Badgam 和 Pulwama(文件 1 中的前两个值)的 districtID 值介于 1000 和 2000 之间,因此状态名称应为 "Jammu & Kashmir"。同样,ID 介于 2000 和 3000 之间的区 Kangra 应该有一个州名 "Himachal Pradesh"。
我的最终结果应该是什么样子:
district districtID value state
Badgam 1002 30.2 Jammu & Kashmir
Pulwama 1012 10.9 Jammu & Kashmir
Kangra 2002 10.2 Himachal Pradesh
Amritsar 3015 29.8 Punjab
...
在许多尝试中,这是唯一有效的:
dvalues$state<-
ifelse(dvalues$districtID<2000,"Jammu & Kashmir",
ifelse(dvalues$districtID>2000 & dvalues$districtID<3000,"Himachal Pradesh",
ifelse(dvalues$districtID>3000 & dvalues$districtID<4000,"Punjab",
ifelse(dvalues$districtID>4000 & dvalues$districtID<5000,"Chandigarh",
...
但是,这既慢又丑,更不用说有 36 行了——我想知道是否有更优雅的解决方案。
谢谢你,非常感谢你的回答。
【问题讨论】:
标签: r