如何根据数据框标记列中的值 "dictionary"
How to label values in a column based on a dataframe "dictionary"
我有这样的数据
col1
33
924
33
12
924
和这样的数据框
col1 col2
12 "London"
33 "Paris"
924 "Singapore"
如何使用 r's labeled 根据第二个数据框中的列标记第一个数据框?
我知道使用 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
我有这样的数据
col1
33
924
33
12
924
和这样的数据框
col1 col2
12 "London"
33 "Paris"
924 "Singapore"
如何使用 r's labeled 根据第二个数据框中的列标记第一个数据框?
我知道使用 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