R 中值的标签

杰科特纳

我有一个数据框,其中所有列都有标签。例如,

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
佐伊

这是我使用包labelleddplyr.

让我们首先创建一些虚拟数据:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章