У меня есть набор данных следующим образом:
library(dplyr)
salary_old<-c(100,200,300,400,10000,100,10,20,30)
salary_new<-c(200,300,400,500,230,240,30,40,50)
d<-as.Date(c('2019-01-01','2019-01-02','2019-01-03'))
country<-c('USA','UK','IR')
id<-c('A','B','A')
data<-data.frame(id,country,d,salary_new,salary_old)
data<-data %>% arrange(id,country,d)
Затем я хочу вычислить T.test для старой и новой зарплаты для каждой группы, используя цикл или применить функцию, чтобы проверить, меньше ли значение p для каждой группы, чем 0,001.
Я написал следующие коды:
datlist <- split(data ,list(data$id , data$country) )
datlist<-datlist[sapply(datlist, nrow)>0]
results<- lapply(
1:length(datlist) ,
FUN = function(x) {
t.test(datlist[[c(x,4)]] , datlist[[c(x,5)]])
})
x<-matrix(nrow=3,ncol=1)
for (i in 1:length(results)){
x[i]<-results[[i]]$p.value
x[i]<-(sum(x[i]<0.001))
}
Я получил значение p.value для каждой группы, но я хочу присоединить его к основному фрейму данных, чтобы узнать, сколько p_value связано с идентификатором / страной / комбинацией: как показано ниже.
id country p-value status
A USA 0.5417366 0
A IR 0.4321609 0
B UK 0.7066187 0