我有一个数据框,其中所有列都有标签。例如,
unique(df$var1)
...
Labels:
value label
1 21 November 2020
2 22 November 2020
3 23 November 2020
4 24 November 2020
我想使用标签,就像使用值一样。有没有办法用列的标签替换列的值?
可以像这样创建数据的最小示例:
library(labelled)
df <- data.frame(
var1 <- labelled(seq(1, 4, 1), c("21 November 2020" = 1,
"22 November 2020" = 2,
"23 November 2020" = 3,
"24 November 2020" = 4)))
所需的输出是:
unique(df$var1)
[1] 21 November 2020
[2] 22 November 2020
[3] 23 November 2020
[4] 24 November 2020
的head()
变量的是:
<labelled<double>[4]>
[1] 1 2 3 4
Labels:
value label
1 21 November 2020
2 22 November 2020
3 23 November 2020
4 24 November 2020
这是我使用包labelled
和dplyr
.
让我们首先创建一些虚拟数据:
df <- data.frame(
var = 1:10,
var2 = labelled(seq(1, 50, 5), c("banana" = 1, "orange" = 6, "apple" = 36)))
如果您查看包含标记信息的列,您会得到以下信息:
> df$var2
<labelled<double>[10]>
[1] 1 6 11 16 21 26 31 36 41 46
Labels:
value label
1 banana
6 orange
36 apple
这是使用左连接将标签添加到自己的单独列的方式:
df_join <- data.frame("values" = as.numeric(val_labels(df$var2)),
"labels" = names(val_labels(df$var2)))
df <- df %>%
left_join(df_join, by = c("var2" = "values"))
这是结果:
> df
var var2 labels
1 1 1 banana
2 2 6 orange
3 3 11 <NA>
4 4 16 <NA>
5 5 21 <NA>
6 6 26 <NA>
7 7 31 <NA>
8 8 36 apple
9 9 41 <NA>
10 10 46 <NA>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句