R 按用户和特定日期合并时间序列数据

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

我有一个如下表所示的数据框。它是一个由用户创建的时间序列

使用者 日期 年龄 情绪分数 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(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