R 使用pivot_后进行总结
我正在尝试使用R 使用pivot_后进行总结,r,dplyr,tidyr,R,Dplyr,Tidyr,我正在尝试使用tidyr中的pivot\u执行基本分组。我想要的是商务旅行者和游客之间的平均评分。但是,我遇到了以下错误: Error: Problem with `mutate()` input `for_business`. x invalid 'labels'; length 2 should be 1 or 1 i Input `for_business` is `factor(for_business, labels = c("business", "to
tidyr
中的pivot\u执行基本分组。我想要的是商务旅行者和游客之间的平均评分。但是,我遇到了以下错误:
Error: Problem with `mutate()` input `for_business`.
x invalid 'labels'; length 2 should be 1 or 1
i Input `for_business` is `factor(for_business, labels = c("business", "tourist"))`.
i The error occurred in group 2: property_id = 1002.
我的代码:
library(tidyverse)
bookings <- read_csv("bookings.csv")
bookings %>%
group_by(property_id, for_business) %>%
summarize(avg_review_score = mean(review_score, na.rm = TRUE)) %>%
mutate(for_business = factor(for_business, labels = c("business", "tourist"))) %>%
mutate(diff = business - tourist) %>%
pivot_wider(names_from = for_business, values_from = avg_review_score) %>%
summarize(avg_diff = mean(diff, na.rm = TRUE)) %>%
ungroup()
您尚未共享足够的数据,但可以尝试:
library(dplyr)
library(tidyr)
bookings %>%
group_by(property_id, for_business) %>%
summarize(avg_review_score = mean(review_score, na.rm = TRUE)) %>%
ungroup %>%
mutate(for_business = c("tourist", "business")[for_business + 1]) %>%
pivot_wider(names_from = for_business, values_from = avg_review_score) %>%
mutate(diff = business - tourist) %>%
summarize(avg_diff = mean(diff, na.rm = TRUE))
在dput中,业务的实际上是一个逻辑变量!!那个么你们为什么要把它转换成一个因子呢?在下一步中还有另一个错误!没有名为business
和tourism
的变量,因此如何计算diff
?你到底想在这里做什么?是的,它工作了,但是你的输出给了我一个值-0.573
,然而,我使用了asmutate(for_business=factor(for_business,labels=c(“business”,“tourism”))%%>%,它给了我0.573
。所以我有一个问题,这个平均值是负的吗?这就是你要寻找的额外信息吗?这是因为我将TRUE
分配给“business”而FALSE
分配给tourism
,我猜你做的恰恰相反。总的来说,使用abs
获取差值的绝对值并不重要。
library(dplyr)
library(tidyr)
bookings %>%
group_by(property_id, for_business) %>%
summarize(avg_review_score = mean(review_score, na.rm = TRUE)) %>%
ungroup %>%
mutate(for_business = c("tourist", "business")[for_business + 1]) %>%
pivot_wider(names_from = for_business, values_from = avg_review_score) %>%
mutate(diff = business - tourist) %>%
summarize(avg_diff = mean(diff, na.rm = TRUE))