【问题标题】:How to label all variables in a Dataframe based on a row in R如何根据 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 的更多信息。
  • 查看您的示例数据,您似乎错误地读取了数据。您的标题已成为第一行。如果您可以显示共享示例的预期输出,这也会很有帮助。

标签: r dataframe label


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 2014-01-24
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多