R - 在现有数据集中创建新变量

问题描述 投票:0回答:1

我正在处理一个包含有关泰坦尼克号乘客信息的数据集。

在第一个代码块中,我将原始数据集'titanic1'存储到一个名为titanic_age_groups的新数据集中。然后,我正在创建一个新变量child_or_adult,将每位乘客分类为一个年龄组。

titanic_age_groups <- titanic1

titanic_age_groups %>% 
  mutate(child_or_adult = ifelse(test = age <= 9 & !is.na(age), 
                                 yes = "child", 
                                 no = "adult"))

到目前为止,代码工作正常。然后,我正在创建新的变量,以便能够找出幸存的孩子数和总孩子数。然后计算(幸存者子女数/总儿童数)。但是当我尝试运行下一个代码块时,我收到此错误:

children <- filter(titanic_age_groups, child_or_adult == 'child')
Error in filter_impl(.data, quo) : 
  Evaluation error: object 'child_or_adult' not found.


children <- filter(titanic_age_groups, child_or_adult == 'child')
children
totalC <- count(children, c('name'))
totalC
totalC <- as.numeric(totalC)
survivorsC <- filter(children, c(survived == 1))
survivorsC
totalsurvC <- count(survivorsC, c('survived'))
totalsurvC
totalsurvC <- as.numeric(totalsurvC)

childP <- (totalsurvC/totalC)
childP

我知道代码:

children <- filter(titanic_age_groups, child_or_adult == 'child')
    children
    totalC <- count(children, c('name'))
    totalC
    totalC <- as.numeric(totalC)
    survivorsC <- filter(children, c(survived == 1))
    survivorsC
    totalsurvC <- count(survivorsC, c('survived'))
    totalsurvC
    totalsurvC <- as.numeric(totalsurvC)

    childP <- (totalsurvC/totalC)
    childP

因为我过去常常找到幸存下来的男人和女人的类似情况。但我不知道为什么R没有识别出新变量'child_or_adult'

r variables
1个回答
0
投票

您的mutate调用需要分配回数据帧。仅使用管道不会修改全局环境中的数据。如果用以下代码替换第一个块,它将正常工作。

titanic_age_groups <- titanic1

titanic_age_groups <- titanic_age_groups %>% 
  mutate(child_or_adult = ifelse(test = age <= 9 & !is.na(age), 
                                 yes = "child", 
                                 no = "adult"))
© www.soinside.com 2019 - 2024. All rights reserved.