R 中值的标签
Labels to values in 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
这是我使用包 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>
我有一个数据框,其中所有列都有标签。例如,
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>