我需要了解为什么有时您需要使用“ by”,而有时却不需要。我真的是R和data.table的新手,所以它可能是基本的东西。
a<-c("A","B","C")
b<-c("AA","BBB","CCC")
x1<-c(2,4,8)
x2<-c(2,4,1)
n1<-c(9,9,9)
n2<-c(10,10,10)
DT <-data.table(a,b,x1,x2,n1,n2)
test1 <- DT[,.(y=nchar(b))]
test2 <- DT[,.(pv1=prop.test(c(x1,x2), c(n1,n2))$p.value)]
test3 <- DT[,.(pv1=prop.test(c(x1,x2), c(n1,n2))$p.value), by= 'a']
test1的行为符合我的预期,它返回一个包含3个观察值和1个变量的数据表。
test2使我感到困惑。我只得到1个观察结果
test3是我得到预期答案的方式。
我不明白为什么test2不能像test1那样按行操作。如果要处理表中的每一行,什么时候需要使用by =?
感谢您的帮助,
大卫
答案 0 :(得分:3)
它确实按行操作。只是,尽管nchar()将向量作为其参数并返回一个向量,但是prop.test(),sum(),mean()等函数会接受一个或多个向量并返回单个值。因此,如果没有'by'参数,该函数将在整个数据表(无子分组)上操作并返回单个值。