R 多变量在数据帧上使用表
我有一个“长”格式的数据表,包含每个唯一ID的许多条目。例如R 多变量在数据帧上使用表,r,reshape,R,Reshape,我有一个“长”格式的数据表,包含每个唯一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) 我的目标是创建一个如下所示的表 id X Y Z 1 2 0 0 2 1 1 1 我想知道一个地点被
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)
我的目标是创建一个如下所示的表
id X Y Z
1 2 0 0
2 1 1 1
我想知道一个地点被访问了多少次。ID#1在A天和B天访问了X,总共进行了2次独特访问。我用重塑来处理这个问题,想把它变成一个“宽”的格式。但是,我不知道如何考虑第二个变量(日期)。我正试图找出在特定日期访问每个地点的次数。除此之外,实际日期本身并不重要,只是它标识了重复的条目
我目前的解决方案在R中的形式很差(使用迭代循环查看每个唯一日期内找到的位置)。我希望重塑、应用、聚合,或者另一个方案可能会更有帮助。我已经浏览了很多其他的重塑指南,但我仍然有点迷恋这样做的巧妙方法。我们可以按“loc”、“id”分组,获得“date”的
唯一元素的长度,并使用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
我们可以按“loc”、“id”分组,获得“date”元素的唯一
的长度
,并使用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(unique(dfTest)[-2])
## loc
## id X Y Z
## 1 2 0 0
## 2 1 1 1
你是在找表(unique(dfTest)[-2])
吗?那太好了,我是R的新手,我觉得我在努力工作。谢谢。你是在找表(unique(dfTest)[-2])
吗?那太好了,我是R的新手,我觉得我在努力工作。谢谢。我也会试试看-我正在处理的文件大约有300k个条目,所以可能会运行得更快。@asshah4来自data.table
的dcast
非常快。我也会试试看-我正在处理的文件大约有300k个条目,所以这可能会运行得更快。@asshah4来自data.table
的dcast
非常快。