r语言 - 如何基于数据帧"dictionary"标记列中的值



我有这样的数据

col1
33
924
33
12
924

和类似的数据帧

col1   col2
12     "London"
33     "Paris"
924    "Singapore"

如何根据第二个数据帧中的列使用r标记来标记第一个数据帧?

我知道使用val_labels((,我可以使用将值标签应用于列中的值

val_labels(df$col1) <- c(London = 12, Paris = 33, Singapore = 924)

但我有1000个不同的值,需要一种允许我使用数据帧的方法

您可以尝试一下,尽管可能有更优雅的解决方案:

df <- data.frame(col1 = c(33, 924, 33, 12, 924))
dic <- data.frame(col1 = c(12, 33, 924),
col2 = c("London","Paris","Singapore"))
library(labelled)
ct <- 1
for(i in dic$col1){
val_label(df, i) <- as.character(dic[ct,2])
ct <- ct+1
}
str(df)
# > str(df)
# 'data.frame': 5 obs. of  1 variable:
#   $ col1: dbl+lbl [1:5]  33, 924,  33,  12, 924
# ..@ labels: Named num  12 33 924
# .. ..- attr(*, "names")= chr [1:3] "London" "Paris" "Singapore"
# > 

使用val_labels:

library(labelled)
col1=c(33,924,33,12,924)
ref <- read.table(text='
col1   col2
12     "London"
33     "Paris"
924    "Singapore"',header=T)
val_labels(col1)<-setNames(ref$col1,ref$col2)
col1
#> <labelled<double>[5]>
#> [1]  33 924  33  12 924
#> 
#> Labels:
#>  value     label
#>     12    London
#>     33     Paris
#>    924 Singapore

相关内容

  • 没有找到相关文章

最新更新