R 按用户和特定日期合并时间序列数据
我有一个如下表所示的数据框。它是一个由用户创建的时间序列 使用者 日期 年龄 情绪分数 A. 9.19 20 1. A. 11.20 20 2. A. 12.10 20 3. B 9.30 19 1. B 10.1 19 4. C 12.1 21 5.R 按用户和特定日期合并时间序列数据,r,R,我有一个如下表所示的数据框。它是一个由用户创建的时间序列 使用者 日期 年龄 情绪分数 A. 9.19 20 1. A. 11.20 20 2. A. 12.10 20 3. B 9.30 19 1. B 10.1 19 4. C 12.1 21 5. 这就是你想做的吗 library(lubridate) library(dplyr) df %>% mutate(Date = as.Date(Date)) %>% group_by(User, Trial = ifelse(da
这就是你想做的吗
library(lubridate)
library(dplyr)
df %>% mutate(Date = as.Date(Date)) %>%
group_by(User, Trial = ifelse(day(Date) > 7 & month(Date) >11, 2, 1)) %>%
summarise(Age = mean(Age),
SentimentScore = mean(SentimentScore), .groups = 'drop')
# A tibble: 4 x 4
User Trial Age SentimentScore
<chr> <dbl> <dbl> <dbl>
1 a 1 20 1.5
2 a 2 20 3
3 b 1 19 2.5
4 c 1 21 5
库(lubridate)
图书馆(dplyr)
df%>%变异(日期=as.Date(日期))%>%
分组依据(用户,试验=ifelse(日(日)>7个月(日)>11,2,1))%>%
总结(年龄=平均(年龄),
情感分数=平均值(情感分数),.groups='drop')
#一个tibble:4x4
用户试用年龄分数
1A 120 1.5
2 a 2 20 3
3 b 1 19 2.5
4 c 1215
使用的数据
df <- read.table(text = "User Date Age SentimentScore
a 2021-09-19 20 1
a 2021-11-20 20 2
a 2021-12-10 20 3
b 2021-09-30 19 1
b 2021-10-01 19 4
c 2021-12-01 21 5", header = T)
df
数据(我手工输入,您应该在问题中提供dput
):
库(data.table)
用户日期年龄分数
#>1:a 2021-09-1920 1
#>2:a 2021-11-202
#>3:a 2021-12-10203
#>4:b 2021-09-30 19 1
#>5:b 2021-10-01 19 4
#>6:c 2021-12-01 21 5
由(v2.0.0)于2021-04-28创建能否提供基于示例数据的结果?这些看起来好像基于不同的数据和列名。请使用dput
函数提供示例数据。它更精确,可以避免误解。@JonSpring编辑,谢谢@XupinZhang我几乎得到了解决方案,但您没有提供数据的dput
供我们复制。你应该让它更容易复制。@Wang抱歉,我是新用户。
library(data.table)
dt[, trial := fcase(Date <= as.Date("2021-11-07"), 1,
Date > as.Date("2021-11-07"), 2)]
dt[,.( Mean.Sentiment.Score = mean(SentimentScore) ),
by = .(User,Age,trial)]
User Age trial Mean.Sentiment.Score
1: a 20 1 1.0
2: a 20 2 2.5
3: b 19 1 2.5
4: c 21 2 5.0