我有一个数据框
$('#textarea').keyup(function () {
$('#textarea-filter').text($('#textarea').val());
$('#textarea-filter').profanityFilter({
customSwears: ['ass']
});
$('#textarea').val($('#textarea-filter').text());
});
所以我有四个独特的名字,每个名字都有。
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_D
我想要的是具有刚才计数的格式的输出。
我需要有一种我可以获得的格式
O
答案 0 :(得分:2)
由于OP提到将“名称”作为单独的列,我们可以使用dcast
中的reshape2
。我们将“long”转换为“wide”格式并指定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所述,来自count
的{{1}}可与dplyr
spread