我有一个数据框,其中包含一个名为ride_length的列,该列已经是hh:mm:ss格式。我想计算该列的平均值,并将其分为两类:member和casual(位于member_casual列)。
我已经尝试过使用Lubridate库的管道:
df %>%
group_by(member_casual) %>%
seconds_to_period(mean(period_to_seconds(hms(ride_length))))
即使我的论点与网上找到的其他例子相同,我仍然得到这样的信息:
秒到周期的误差(.,mean(period_to_seconds(hms(ride_length):未使用的参数(mean(period_to_seconds(hms(ride_length)
我也尝试了一条更长的路:
df$nride_length <- difftime(strptime(df$ride_length,"%H:%M:%S"),
strptime("00:00:00","%H:%M:%S"),
units="mins")
df.means <- aggregate(df$nride_length,by=list(df$member_casual),mean)
df.means$ride_length <- format(.POSIXct(df.means$x,tz="GMT"), "%H:%M:%S")
df.means
但结果还是有问题:
Group.1 x ride_length 1休闲NA mins 2成员NA mins
我也试着总结一下:
df %>%
group_by(member_casual) %>%
summarise(length_mean = seconds_to_period(mean(period_to_seconds(hms(ride_length)))))
但这表明:
# A tibble: 2 × 2
member_casual length_mean
<chr> <Period>
1 casual NA
2 member NA
Warning message:
There were 2 warnings in `summarise()`.
The first warning was:
ℹ In argument: `length_mean =
seconds_to_period(mean(period_to_seconds(hms(ride_length))))`.
ℹ In group 1: `member_casual = "casual"`.
Caused by warning in `.parse_hms()`:
! Some strings failed to parse, or all strings are NAs
ℹ Run dplyr::last_dplyr_warnings() to see the 1 remaining warning.
请帮
2条答案
按热度按时间ndh0cuux1#
您可以单独使用
aggregate()
。像使用方差分析那样指定分组。我改变了数据。框架一点,所以有三个“成员”和“休闲”。zy1mlcev2#
假设您的数据如下:
我试过你上面试过的代码,它对我很有效。
所以请确认你的数据有正确的格式,特别是名为'ride_length'的列,单独运行
hms(df$ride_length)
并检查它是否成功运行。