如何通过计算现有列来制作新列 [英] How to make new columns by counting up an existing column
本文介绍了如何通过计算现有列来制作新列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想通过在R中进行group_by来创建其他一些列。
I'd like to make some other columns by doing group_by in R.
当原始表格如下时
userID cat1 cat2
a f 3
a f 3
a u 1
a m 1
b u 2
b m 1
b m 2
我按用户ID对其分组,并希望它像
I group them by userID and want it come like
userID cat1_f cat1_m cat1_u cat2_1 cat2_2 cat2_3
a 2 1 1 2 0 1
b 0 2 1 1 2 0
推荐答案
我们可以收集
所有值然后计数
,通过粘贴
cat 和 value
值,然后传播
并以 fill = 0 code>。
We could gather
all the values then count
them, create a new column by paste
ing cat
and value
values and then spread
it back to wide format with fill=0
.
library(tidyverse)
df %>%
gather(cat, value, -userID) %>%
count(userID, cat, value) %>%
unite(cat, c(cat, value)) %>%
spread(cat, n, fill = 0)
# userID cat1_f cat1_m cat1_u cat2_1 cat2_2 cat2_3
# <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 a 2 1 1 2 0 2
#2 b 0 2 1 1 2 0
这篇关于如何通过计算现有列来制作新列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文