【发布时间】:2015-02-16 11:32:09
【问题描述】:
当这个特定问题出现时,处理这个特定问题的最佳做法是什么?例如我创建了一个数据框:
dat<- sqlQuery(con,"select * from mytable")
我的桌子的样子:
ID RESULT GROUP
-- ------ -----
1 Y A
2 N A
3 N B
4 Y B
5 N A
其中ID是int,Result和Group都是因素。
问题是当我想做这样的事情时:
tapply(dat$RESULT,dat$GROUP,sum)
我收到关于列是一个因素的投诉:
Error in Summary.factor(c(2L,2L,2L,2L,1L,2L,1L,2L,2L,1L,1L, :
sum not meaningful for factors
考虑到因素对于 ggplot 之类的使用至关重要,其他人是如何处理这个问题的?
设置 stringsAsFactors=FALSE 并重新运行给出
tapply(dat$RESULT,dat$GROUP,sum)
Error in FUN(X[[1L]], ...) : invalid "type" (character) or argument
所以我不确定仅仅设置 stringsAsFactors=FALSE 是正确的方法
【问题讨论】:
-
不清楚你想总结什么。是
RESULT=='Y'的sum吗?如果是这种情况with(dat, tapply(as.character(RESULT)=='Y', GROUP, FUN=sum))或使用table。 IE。table(dat[-1]) -
@akrun - 谢谢,是的,这正是我想做的。我的 tapply 声明也不太正确,所以谢谢你的澄清。 as.character 负责处理这些因素。谢谢
标签: r