在尝试了之前推荐的类似挑战之后,我仍然迷失了,也许我错过了一些简单的事情。
我有两个数据框 Uniques 和 Uniques2 。
在 Uniques 中,我有一个包含49,999行变量的列。
在 Uniques2 中,我已将独特变量分开,总共得出403.
现在,我想计算 Uniques $ aa.IndustryGroup 中某个列中 Uniques2 $ aa.IndustryGroup 中的每个变量出现的次数。我希望它显示在 Uniques2 数据框中的新列 $ Count 中。
以前的堆栈question建议使用==和SUM来找出答案,我认为这很简单。
所以我试过了,
Uniques2$Count = data.frame(sum(Uniques$aa.IndustryGroup == Uniques2$aa.IndustryGroup))
它返回有关长度的错误,我知道这意味着我不是要求它做我想要的正确。
Error in `$<-.data.frame`(`*tmp*`, "Count", value = list(sum.Uniques.aa.IndustryGroup....Uniques2.aa.IndustryGroup. = 138L)) :
replacement has 1 row, data has 403
In addition: Warning messages:
1: In is.na(e1) | is.na(e2) :
longer object length is not a multiple of shorter object length
2: In `==.default`(Uniques$aa.IndustryGroup, Uniques2$aa.IndustryGroup) :
longer object length is not a multiple of shorter object length
感谢您成为一个出色的社区并留下了一串面包屑。没有你,这次冒险的成功是不可能的。
答案 0 :(得分:1)
现在我想计算每个变量的时间 Uniques2 $ aa.IndustryGroup出现在某个列中 不重复$ aa.IndustryGroup。我希望它显示在一个新列中 $在Uniques2数据框中计数。
# reproducible example!
set.seed(123)
Uniques <- data.frame(aa.IndustryGroup=sample(LETTERS,49999,replace=T))
Uniques2 <- data.frame(aa.IndustryGroup=LETTERS)
Uniques2$Count <- sapply(Uniques2$aa.IndustryGroup,
function(x) sum(Uniques$aa.IndustryGroup==x))
说明:您尝试的内容有两个问题:首先,您无法在向量data.frame
中存储Uniques2$Count
。其次,你不能进行矢量比较v1 == v2
,因为你知道这些矢量的长度不同,你真的在问v2
的每个元素,它在v1
中出现了多少次。 apply
家庭是一个很好的方法。