R 分组因子、数据框和tapply的问题
一般来说,我对R和stats都很陌生,在让tapply()工作时遇到了麻烦。我有一个包含15列和数千行的数据框。我使用类似于R 分组因子、数据框和tapply的问题,r,statistics,dataframe,tapply,R,Statistics,Dataframe,Tapply,一般来说,我对R和stats都很陌生,在让tapply()工作时遇到了麻烦。我有一个包含15列和数千行的数据框。我使用类似于y10的东西制作了一组逻辑向量,这里可以使用(xtapply,您只需将组向量添加到您的数据中。frame,然后使用tapply,如下所示: # Generating a 'group' vector with variability in its values # and merging it to the existing data.frame (FOO) set.se
y10的东西制作了一组逻辑向量,这里可以使用(xtapply
,您只需将组
向量添加到您的数据中。frame
,然后使用tapply
,如下所示:
# Generating a 'group' vector with variability in its values
# and merging it to the existing data.frame (FOO)
set.seed(1)
FOO$group <- as.factor(sample( 1:8, nrow(FOO), replace=TRUE))
# Using tapply
tapply(FOO[,-16], FOO[,16], sample, size=20, replace=TRUE)
#生成值可变的“组”向量
#并将其合并到现有的data.frame(FOO)
种子(1)
FOO$grouptapply
可在此处使用,您只需将group
向量添加到数据中。frame
,然后使用tapply
,如下所示:
# Generating a 'group' vector with variability in its values
# and merging it to the existing data.frame (FOO)
set.seed(1)
FOO$group <- as.factor(sample( 1:8, nrow(FOO), replace=TRUE))
# Using tapply
tapply(FOO[,-16], FOO[,16], sample, size=20, replace=TRUE)
#生成值可变的“组”向量
#并将其合并到现有的data.frame(FOO)
种子(1)
FOO$group如果您提供了一些示例数据,这个问题将更容易回答。使用dput(head(yourdata,15))
或类似的方法可能会有所帮助。您可能希望使用nrow(dataframe)
,它给出行数,而不是长度(dataframe)
,它给出了用于比较的列数。谢谢,我刚刚尝试过,它返回了正确的行数(即数据框中的行数与分组因子中的行数相同)。您已经提供了输入数据,好吧。但是我们没有组
。您的帖子还不能完全复制。另外,您寻求的最终输出是什么?这些元素会更快得到您的答案。@FalseAzure您之所以会得到错误,是因为您向tapply
提供了数据.frame
而不是向量
函数。仔细阅读您必须找到的帮助文件:X一个原子对象,通常是一个向量。
也许aggregate
更适合这种情况。如果您提供一些示例数据,这个问题将更容易回答。使用dput(head(yourdata,15))
或某种程度上的东西可能会有帮助。您可能希望使用给出行数的nrow(dataframe)
,而不是给出列数的length(dataframe)
,来进行比较。谢谢,我刚刚尝试过,它返回了正确的行数(即数据框中的行数与分组因子中的行数相同)。您已经提供了输入数据,好吧。但是我们没有组
。您的帖子还不能完全复制。另外,您寻求的最终输出是什么?这些元素会更快得到您的答案。@FalseAzure您之所以会得到错误,是因为您向tapply
提供了数据.frame
而不是向量
函数。仔细阅读您必须找到的帮助文件:X原子对象,通常是向量。
也许aggregate
更适合这种情况。谢谢!出于某种原因,我仍然会遇到相同的错误,但我应该能够找到它。谢谢!出于某种原因,我仍然会遇到相同的错误,但我应该能够去弄清楚。
structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8"), class = "factor")
# Generating a 'group' vector with variability in its values
# and merging it to the existing data.frame (FOO)
set.seed(1)
FOO$group <- as.factor(sample( 1:8, nrow(FOO), replace=TRUE))
# Using tapply
tapply(FOO[,-16], FOO[,16], sample, size=20, replace=TRUE)