>我有一个数据框,其中包含一段时间内数千个实体的数字。 我在同一时间段内有另一个数据框,随着时间的推移具有不同的列名称:
> mfdf
#date Entity1 Entity2 Entity3 ... EntityN
#1988 1 13 16 ... 17
#1989 2 14 3 ... 11
#1990 6 15 8 ... 4
#... ... ... ... ... 6
#2018 4 1 8 ... 5
我想根据列名称的数据框提取年份的相应实体编号:
> curationdf
#date V1 V2
#1988 Entity64 Entity2
#1989 Entity1 Entity57
#1990 Entity1500 Entity70
#...
#2018 Entity23 Entity9
如果这是在 excel 中完成的,那将是一个 =IF(MATCH((( 作业,但我不熟悉如何在 R 编程中构造类似的东西。
不是那么短,但有一个带有tidyr和dplyr的解决方案:
gather(df,var,val,-year) %>% inner_join(curationdf,"year") %>%
filter((var==v1)|(var==v2)) %>%
mutate(var=ifelse(var==v1,"v1","v2")) %>% spread(var,val)