首先,我保证我先找了答案。我昨天才开始学R,这个问题很基础。所以,要么这个问题太基本了,没人问过,要么我没意识到我在看答案。
基本上,这就是这个练习中的任务(别担心,这不是一个测试):
还可以使用
mutate()
函数对列进行更改。假设您想创建一个新列,汇总预订中所有成人、儿童和婴儿的总人数。修改下面的代码块以创建新列:
example_df <- bookings_df %>%
mutate(guests = )
head(example_df)
有三个列("成人"、"儿童"one_answers"婴儿"),我想把它们的值添加到名为"客人"的新列中。所以我尝试了
example_df <- bookings_df %>%
mutate(example_df, guests = c("adults", "children", "babies"))
head(example_df)
当然,它会返回一个错误"guests
必须是119390或1,而不是3.">
到目前为止,我还没有学过任何高级函数。所以答案将是一些对于第一周学习R的学生来说非常基础的东西。
帮助吗?
假设"成人"、"儿童"one_answers"婴儿"的数据;列是每个预订的数量的数字计数,这里有两个简单的解决方案:
# solution 1: use the addition operator
example_df <- bookings_df %>% mutate(guests = adults + children + babies)
# solution 2: use the rowwise() and sum() functions
example_df <- bookings_df %>% rowwise() %>% mutate(guests = sum(adults, children, babies))
请注意,方案2中的rowwise()
允许通过sum()
函数进行逐行求和。如果没有为方案2指定rowwise()
,则sum()
命令将把所有三列中的所有内容加在一起,并为guest
列中的所有行提供单个答案(总和)。
解释您尝试中的错误
c("adults", "children", "babies")
在您的尝试中输出您键入的三个单词作为三个单独的输出。因此,您收到了错误"guests
的大小必须是119390或1,而不是3。它可以是119390个输出,因为bookings_df
有119390行,所以它需要那么多输出,或者是1个输出,这样新列中的所有输出都是相同的。
c()
也不执行这三个单词的数学加法。在R中运行?c
,以获得关于如何使用c()
的有用描述。
"adults"
、"children"
和"babies"
项目周围的引号进一步使这些项目只是单词或字符类项目。这意味着这三个单词不指向数据框架中的列(尽管有一种更长的迂回方法可以使用其他函数使字符词指向数据框架中的列名,但这可能超出了本文的练习范围)。