【发布时间】:2019-01-28 17:40:09
【问题描述】:
我有一个如下所示的数据集:
Year Country Matchcode P H
1 2000 France 0001 1213 1872
2 2001 France 0002 1234 2345
3 2000 UK 0003 1726 2234
4 2001 UK 0004 6433 9082
我有另一个数据集,看起来像这样:
Indicator Code Indicator Name
P Power
H Happiness
我想在第二个数据集的第二列(Power,Happiness)中添加信息作为第一个数据集中使用循环的缩写的标签,但我不知道如何编写循环。
这是我走了多远:
library(Hmisc)
for i in df2[,1]{
if (df1[,i] == df2[i,]){
label(df1[,i]) <- df2[i,2]
}}
但这只是检查名称是否相同而不搜索它。 有人可以进一步指导吗?
期望的输出:
Year Country Matchcode P(label=Power) H(label=Happiness)
1 2000 France 0001 1213 1872
2 2001 France 0002 1234 2345
3 2000 UK 0003 1726 2234
4 2001 UK 0004 6433 9082
【问题讨论】:
-
我还是不明白你在做什么。您是否只想将
label = Power和label = Happiness分别添加到列名P和H中?我不明白你想用Hmisc::label做什么。Hmisc::label只是设置/读取变量的label属性。列名是普通的character向量。 -
colnames(df[4:5])
-
@MauritsEvers 哈哈,对不起,我显然不善于解释。好吧,实际上我只想将 Power 作为标签添加到 P,Happiness 作为标签添加到 H 等等。我知道在这个例子中它没有多大意义,但它对我的实际数据集非常有用
-
@milan 谢谢你的回答。我正在寻找更通用的解决方案。实际数据集大约有 1600 个变量。
-
@TomKisters
Hmisc::label(x)为特定对象添加一个属性(您可以通过attributes(x)进行检查)。在我看来,您想要做的就是更改某些列的列名(基于查找)。 AntoniosK 在下面的回答是否符合您的要求?
标签: r for-loop if-statement label hmisc