如何在R中融化或重塑装箱数据?
我收集了反映各大洲河流宽度的数据。下面是一个示例数据集。我只是想把数据转换成我所展示的形式如何在R中融化或重塑装箱数据?,r,aggregate,reshape,melt,R,Aggregate,Reshape,Melt,我收集了反映各大洲河流宽度的数据。下面是一个示例数据集。我只是想把数据转换成我所展示的形式 dat <- read.table(text = "width continent bin 5.32 Africa 10 6.38 Africa 10 10.80 Asia 20
dat <- read.table(text =
"width continent bin
5.32 Africa 10
6.38 Africa 10
10.80 Asia 20
9.45 Africa 10
22.66 Africa 30
9.45 Asia 10",header = TRUE)
我们可以按组使用聚合中的任意一个
data.table
选项将“data.frame”转换为“data.table”(setDT(dat)
),按“大陆”和“bin”变量分组,我们得到每组的元素数(.N
)
或者使用类似的选项对变量进行分组,然后使用n()
而不是.n
来获取计数
library(dplyr)
dat %>%
group_by(continent, bin) %>%
summarise(Count=n())
或者我们可以使用base R
中的aggregate
,并使用公式方法,得到长度
aggregate(cbind(Count=width)~., dat, FUN=length)
# continent bin Count
#1 Africa 10 3
#2 Asia 10 1
#3 Asia 20 1
#4 Africa 30 1
根据@Frank和@David Arenburg的评论,使用data.table
和dplyr
提供了一些附加选项。我们将数据集转换为data.table
(setDT(dat)
),使用dcast
转换为“宽”格式,然后使用melt
将其重新转换回“长”格式,并将roww子集(value>0
)
使用dplyr中的count
library(dplyr)
count(dat, bin, continent)
我们可以按组使用聚合中的任意一个
data.table
选项将“data.frame”转换为“data.table”(setDT(dat)
),按“大陆”和“bin”变量分组,我们得到每组的元素数(.N
)
或者使用类似的选项对变量进行分组,然后使用n()
而不是.n
来获取计数
library(dplyr)
dat %>%
group_by(continent, bin) %>%
summarise(Count=n())
或者我们可以使用base R
中的aggregate
,并使用公式方法,得到长度
aggregate(cbind(Count=width)~., dat, FUN=length)
# continent bin Count
#1 Africa 10 3
#2 Asia 10 1
#3 Asia 20 1
#4 Africa 30 1
根据@Frank和@David Arenburg的评论,使用data.table
和dplyr
提供了一些附加选项。我们将数据集转换为data.table
(setDT(dat)
),使用dcast
转换为“宽”格式,然后使用melt
将其重新转换回“长”格式,并将roww子集(value>0
)
使用dplyr中的count
library(dplyr)
count(dat, bin, continent)
使用sqldf
:
library(sqldf)
sqldf("SELECT bin, continent, COUNT(continent) AS count
FROM dat
GROUP BY bin, continent")
输出:
bin continent count
1 10 Africa 3
2 10 Asia 1
3 20 Asia 1
4 30 Africa 1
使用sqldf
:
library(sqldf)
sqldf("SELECT bin, continent, COUNT(continent) AS count
FROM dat
GROUP BY bin, continent")
输出:
bin continent count
1 10 Africa 3
2 10 Asia 1
3 20 Asia 1
4 30 Africa 1
您可以添加sqldf
@akrun再次感谢您您可以添加sqldf
@akrun再次感谢您,以便使用melt
,如标题中所述:setDT(melt(dcast(dat,constance~bin))[value>0]
还可以添加count(dat,bin,constandard)
为了使用melt
如标题所述:setDT(melt(dcast(dat,大洲~bin)))[value>0]
也计数(dat,大洲~bin)