通过多个变量在数据帧上使用 Table
Using Table on data frame by mutliple variables
我有一个 table 格式的数据 "long",每个唯一 ID 包含许多条目。例如...
id <- c(1,1,1,2,2,2)
date <- c("A","A","B","C","C","C")
loc <- c("X", "X", "X", "X","Y","Z")
dfTest <- data.frame(id,date,loc)
创建样本 table。
id date loc
1 1 A X
2 1 A X
3 1 B X
4 2 C X
5 2 C Y
6 2 C Z
我的目标是创建一个看起来像这样的 table。
id X Y Z
1 2 0 0
2 1 1 1
我想看看某个地点被访问了多少次。 ID#1 在 A 天和 B 天访问了 X,总共有 2 次独立访问。我使用 reshape 来解决这个问题,想把它变成 "wide" 格式。但是,我不知道如何考虑第二个变量(日期)。我试图提取在特定日期访问每个位置的次数。否则实际日期本身并不重要,只是它标识重复条目。
我当前的解决方案在 R 中的形式很差(使用迭代循环查看在每个唯一日期内找到的位置)。我希望重塑、应用、聚合,或者另一个包可能会有更多帮助。我已经浏览了一堆其他重塑指南,但我仍然对执行此操作的巧妙方法有些困惑。
我们可以按'loc'、'id'分组,得到'date'的unique
个元素的length
,用dcast
得到预期的输出。
library(data.table)#v1.9.6+
dcast(setDT(dfTest)[, uniqueN(date), .(loc, id)], id~loc, value.var='V1', fill=0)
# id X Y Z
#1: 1 2 0 0
#2: 2 1 1 1
根据它的声音,您应该能够做您需要的事情:
table(unique(dfTest)[-2])
## loc
## id X Y Z
## 1 2 0 0
## 2 1 1 1
我有一个 table 格式的数据 "long",每个唯一 ID 包含许多条目。例如...
id <- c(1,1,1,2,2,2)
date <- c("A","A","B","C","C","C")
loc <- c("X", "X", "X", "X","Y","Z")
dfTest <- data.frame(id,date,loc)
创建样本 table。
id date loc
1 1 A X
2 1 A X
3 1 B X
4 2 C X
5 2 C Y
6 2 C Z
我的目标是创建一个看起来像这样的 table。
id X Y Z
1 2 0 0
2 1 1 1
我想看看某个地点被访问了多少次。 ID#1 在 A 天和 B 天访问了 X,总共有 2 次独立访问。我使用 reshape 来解决这个问题,想把它变成 "wide" 格式。但是,我不知道如何考虑第二个变量(日期)。我试图提取在特定日期访问每个位置的次数。否则实际日期本身并不重要,只是它标识重复条目。
我当前的解决方案在 R 中的形式很差(使用迭代循环查看在每个唯一日期内找到的位置)。我希望重塑、应用、聚合,或者另一个包可能会有更多帮助。我已经浏览了一堆其他重塑指南,但我仍然对执行此操作的巧妙方法有些困惑。
我们可以按'loc'、'id'分组,得到'date'的unique
个元素的length
,用dcast
得到预期的输出。
library(data.table)#v1.9.6+
dcast(setDT(dfTest)[, uniqueN(date), .(loc, id)], id~loc, value.var='V1', fill=0)
# id X Y Z
#1: 1 2 0 0
#2: 2 1 1 1
根据它的声音,您应该能够做您需要的事情:
table(unique(dfTest)[-2])
## loc
## id X Y Z
## 1 2 0 0
## 2 1 1 1