R 唯一计数
我有一个数据框R 唯一计数,r,plyr,R,Plyr,我有一个数据框 Name Address War Stacy_A Stacy_A_1 A Stacy_B Stacy_B_1 B Stacy_C Stacy_C_1 C Stacy_A Stacy_A_2 A Stacy_B Stacy_B_2 B Stacy_C Stacy_C_2 C Stacy_D Stacy_D_2 O 所以我有四个唯一的名字,每个名字下面都有 Stacy_A有两个地址,都在战争中A Stacy_
Name Address War
Stacy_A Stacy_A_1 A
Stacy_B Stacy_B_1 B
Stacy_C Stacy_C_1 C
Stacy_A Stacy_A_2 A
Stacy_B Stacy_B_2 B
Stacy_C Stacy_C_2 C
Stacy_D Stacy_D_2 O
所以我有四个唯一的名字,每个名字下面都有
有两个地址,都在战争中Stacy_A
A
有两个地址,都在战争中Stacy_B
B
有两个地址,都在战争中Stacy_C
C
只有一个地址,而且在战争中Stacy\u D
O
names A B C O
Stacy_A 2 0 0 0
Stacy_B 0 2 0 0
Stacy_C 0 0 2 0
Stacy_D 0 0 0 1
正如OP提到的将“Name”作为一个单独的列,我们可以使用
restrape2
中的dcast
。我们将“长”格式转换为“宽”格式,并指定fun.aggregate
,即在本例中为length
library(reshape2)
dcast(df1, Name~War, value.var="Address", length)
# Name A B C O
#1 Stacy_A 2 0 0 0
#2 Stacy_B 0 2 0 0
#3 Stacy_C 0 0 2 0
#4 Stacy_D 0 0 0 1
或者使用
dplyr/tidyr
,我们按“名称”、“战争”列进行分组,通过tally
获得独特组合的频率,然后将spread
(tidyr)从“长”格式改为“宽”格式
library(dplyr)
library(tidyr)
df1 %>%
group_by(Name, War) %>%
tally() %>%
spread(War, n, fill=0)
# Name A B C O
# (chr) (dbl) (dbl) (dbl) (dbl)
#1 Stacy_A 2 0 0 0
#2 Stacy_B 0 2 0 0
#3 Stacy_C 0 0 2 0
#4 Stacy_D 0 0 0 1
或者正如@docendo discimus所提到的,dplyr
中的count
可以与spread
count(df, Name, War) %>%
spread(War, n, fill = 0)
正如OP提到的将“Name”作为一个单独的列,我们可以使用
restrape2
中的dcast
。我们将“长”格式转换为“宽”格式,并指定fun.aggregate
,即在本例中为length
library(reshape2)
dcast(df1, Name~War, value.var="Address", length)
# Name A B C O
#1 Stacy_A 2 0 0 0
#2 Stacy_B 0 2 0 0
#3 Stacy_C 0 0 2 0
#4 Stacy_D 0 0 0 1
或者使用
dplyr/tidyr
,我们按“名称”、“战争”列进行分组,通过tally
获得独特组合的频率,然后将spread
(tidyr)从“长”格式改为“宽”格式
library(dplyr)
library(tidyr)
df1 %>%
group_by(Name, War) %>%
tally() %>%
spread(War, n, fill=0)
# Name A B C O
# (chr) (dbl) (dbl) (dbl) (dbl)
#1 Stacy_A 2 0 0 0
#2 Stacy_B 0 2 0 0
#3 Stacy_C 0 0 2 0
#4 Stacy_D 0 0 0 1
或者正如@docendo discimus所提到的,dplyr
中的count
可以与spread
count(df, Name, War) %>%
spread(War, n, fill = 0)
表格(mydf[c(1,3)])
?“地址”列与这个问题有什么关系?表(mydf[c(1,3)])
?“地址”列与此问题有什么关系?或者count(test,Name,War)%%>%spread(War,n,fill=0)
谢谢docendo,但我在新版本的中找不到spreadr@AshishPatodia您是否安装了tidyr
?或count(测试、名称、战争)%%>%排列(战争、n、填充=0)
谢谢docendo,但我在新版的中找不到spreadr@AshishPatodia您三天安装了tidyr
?