我有一个数据框,如下所示:
df <- data.frame(group = c("A", "B", "C", "D", "E"),
country=c("US","UK"),
md = runif(10,0,10),
og = runif(10, 0, 10))
,并希望在每行中使用wilcox函数来比较每个组和每个国家/地区中的md和og。
results <- apply(df,1,function(x){
df <- data.frame(x)
wres<-wilcox.test(df$md,df$og)
df$test<-format(wres$p.value,scientific = F)
})
我想让另一列包含P值。 但是当我运行它时,出现以下错误:
Error in wilcox.test.default(df$mean_modified, df$mean_original) :
'x' must be numeric
答案 0 :(得分:1)
我正在尝试自己学习apply
。您似乎想比较每个组或国家/地区的md
和og
。还有其他(更好)的解决方案。以下是使用apply
族比较每个md
的{{1}}和og
的一种练习:
country
您将获得类似的内容:
results <- sapply(levels(df$country), function(x){
df <- subset(df, country== x)
wilcox.test(df$md,df$og)$p.value})
results
答案 1 :(得分:1)
我们可以使用mapply
为每个值应用wilcox.test
,然后从中提取p.value
df$p.value <- mapply(function(x, y) wilcox.test(x, y)$p.value, df$md, df$og)