使用 purrr 在 R 中标记跨多列的观察结果
Label observations across multiple columns in R using purrr
我有一个 .csv 数据集的观察标签列表,例如,1 =“是”,0 =“否”,其中第 k 列的所有观察值等于 1 的标签具有标签的“是”,但保留基础数值 1 或 0。
我想使用此列表向我的数据集迭代添加标签,最好使用 purrr 或 tidyverse。
这是我正在尝试做的事情的一个例子,但在多个列中是大规模的。
# load packages
library(tidyverse)
library(sjlabelled)
# load package data
data(efc)
# let's just start with a basic data frame
efc_twovar <- efc %>% select(e42dep, e15relat)
# create a list of labels
lab_list <- list(attr(efc$e42dep, "labels"), attr(efc$e15relat, "labels"))
# remove the labels from our data set
attr(efc_twovar, "labels") <- ""
# basic set up
set_labels(efc_twovar$e42dep, labels = lab_list[1])
# purrr attempt
map(efc_twovar, set_labels, labels = lab_list)
上面的 purrr
尝试导致列表中第一个向量的标签应用于数据框中的两列,而不仅仅是第一列。我最终想为尽可能多的列使用大约 20 个标签向量的列表来做到这一点。
实现所需结果的一种选择是根据数据的列名称命名标签列表。这样做您可以仅使用 set_labels
:
标记您的数据
library(sjlabelled)
data(efc)
efc_twovar <- efc[c("e42dep", "e15relat")]
attr(efc_twovar, "labels") <- NULL
lab_list <- list(attr(efc$e42dep, "labels"), attr(efc$e15relat, "labels"))
names(lab_list) <- names(efc_twovar)
efc_twovar <- set_labels(efc_twovar, labels = lab_list)
lapply(efc_twovar, attributes)
#> $e42dep
#> $e42dep$label
#> [1] "elder's dependency"
#>
#> $e42dep$labels
#> independent slightly dependent moderately dependent
#> 1 2 3
#> severely dependent
#> 4
#>
#>
#> $e15relat
#> $e15relat$label
#> [1] "relationship to elder"
#>
#> $e15relat$labels
#> spouse/partner child sibling
#> 1 2 3
#> daughter or son -in-law ancle/aunt nephew/niece
#> 4 5 6
#> cousin other, specify
#> 7 8
我有一个 .csv 数据集的观察标签列表,例如,1 =“是”,0 =“否”,其中第 k 列的所有观察值等于 1 的标签具有标签的“是”,但保留基础数值 1 或 0。
我想使用此列表向我的数据集迭代添加标签,最好使用 purrr 或 tidyverse。
这是我正在尝试做的事情的一个例子,但在多个列中是大规模的。
# load packages
library(tidyverse)
library(sjlabelled)
# load package data
data(efc)
# let's just start with a basic data frame
efc_twovar <- efc %>% select(e42dep, e15relat)
# create a list of labels
lab_list <- list(attr(efc$e42dep, "labels"), attr(efc$e15relat, "labels"))
# remove the labels from our data set
attr(efc_twovar, "labels") <- ""
# basic set up
set_labels(efc_twovar$e42dep, labels = lab_list[1])
# purrr attempt
map(efc_twovar, set_labels, labels = lab_list)
上面的 purrr
尝试导致列表中第一个向量的标签应用于数据框中的两列,而不仅仅是第一列。我最终想为尽可能多的列使用大约 20 个标签向量的列表来做到这一点。
实现所需结果的一种选择是根据数据的列名称命名标签列表。这样做您可以仅使用 set_labels
:
library(sjlabelled)
data(efc)
efc_twovar <- efc[c("e42dep", "e15relat")]
attr(efc_twovar, "labels") <- NULL
lab_list <- list(attr(efc$e42dep, "labels"), attr(efc$e15relat, "labels"))
names(lab_list) <- names(efc_twovar)
efc_twovar <- set_labels(efc_twovar, labels = lab_list)
lapply(efc_twovar, attributes)
#> $e42dep
#> $e42dep$label
#> [1] "elder's dependency"
#>
#> $e42dep$labels
#> independent slightly dependent moderately dependent
#> 1 2 3
#> severely dependent
#> 4
#>
#>
#> $e15relat
#> $e15relat$label
#> [1] "relationship to elder"
#>
#> $e15relat$labels
#> spouse/partner child sibling
#> 1 2 3
#> daughter or son -in-law ancle/aunt nephew/niece
#> 4 5 6
#> cousin other, specify
#> 7 8