如何根据 R 中的行标记数据框中的所有变量

Posted

技术标签:

【中文标题】如何根据 R 中的行标记数据框中的所有变量【英文标题】:How to label all variables in a Dataframe based on a row in R 【发布时间】:2020-12-01 01:05:46 【问题描述】:

我有 2 个关于在整个数据框中进行标记的问题:

我有一个患者的横截面数据集(每行是一个患者)和变量(每列是一个变量)。第一行是变量名,第二行是标签。例如第 1 行的 BMI 和第 2 行的体重指数。

问题 1:如何让 R 识别第二行是一个标签,而无需单独输入每个标签 age=Age 等?有数百个变量需要标记。也许在导入期间以某种方式?或者通过将标签分离到不同的数据框?除了为每个变量单独输入或将其放入仅包含变量名称和标签的单独数据集并使用来自R: Assign variable labels of data frame columns的匹配之外,我似乎找不到解决方案@

library(Hmisc)

var.labels = dat2

label(data) = as.list(var.labels[match(names(data), names(var.labels))])

label(data)
                     age                      sex 
          "Age in Years" "Sex of the participant"   

问题 2: 如果我的数据中所有 0 值都是“否”并且所有“1”值都是“是”,我如何将所有 0 值标记为“否”而将所有 1 值标记为“是的”?除了单独的标签,我没有找到任何代码。

提前非常感谢!!!

这是它的迷你版: 投入: 结构(列表(患者 = c(“患者”、“T1”、“T2”、“T3”、“T4”、 “T5”,“T6”,“T7”,“T8”,“T9”,“T10”),变量名1 = c(“变量标签1”, “2”、“1”、“4”、“2”、“2”、“1”、“1”、“1”、“1”、“1”), variablename2 = c("变量标签 2" , “3”、“1”、“2”、“2”、“2”、“2”、“1”、“2”、“1”、“1”)), row.names = c(NA, -11L), class= c("tbl_df", "tbl", "data.frame"))

【问题讨论】:

请向我们展示您的数据是什么样的。使用dput() 并将该文件的内容粘贴到您的问题中,以便我们可以尝试一些事情来帮助您。此外,粘贴您可能尝试过的任何代码。阅读有关提供minimal reproducible example 的更多信息。 查看您的示例数据,您似乎错误地读取了数据。您的标题已成为第一行。如果您可以显示共享示例的预期输出,这也会很有帮助。 【参考方案1】:
library(tidyverse)

string <-
"Body mass index, Age, Answer1, Answer2
BMI, Age, Answer1, Answer2
20, 27, 1, 0
29, 42, 1, 1"

# reading in column names (both short and long)
df_names <- read_csv(file = string, n_max = 2, col_names = F)

# reading in values
df_values <- read_csv(file = string, skip = 2, col_names = F) %>%
  mutate(across(-(X1:X2), ~if_else(.x == 1, "yes", "no"))) # replacing 1 with yes and 0 with no

names(df_values) <- as.character(df_names[1,]) # assigning long names as names
names(df_values) <- as.character(df_names[2,]) # assigning short names as names

【讨论】:

以上是关于如何根据 R 中的行标记数据框中的所有变量的主要内容,如果未能解决你的问题,请参考以下文章

R - 如何使用 sparklyr 复制火花数据框中的行

如何从 Shiny 中的下拉框中根据变量选择动态创建直方图

如何根据列中的最新日期聚合 pandas 数据框中的行?

如何在 R 中合并同一数据框中的行(基于特定列下的重复值)?

如何从r中的两个数据框中选择匹配的行

如何根据条件选择R数据框中的连续行?