我有一个看起来像这样的数据框:
head(df)
id id_child
1 1
1 2
1 3
2 1
4 1
4 2
我想创建一个变量,用于计算每个父级的孩子数。所以我想要这样的东西:
head(nb_chilren)
id id_child
1 3
2 1
3 0
4 2
如果可能的话,我希望将第3个人表示为有0个孩子,即使她在第一帧中不存在。
注意: ID是连续的,在实际数据中,它们是1到10628。
有什么建议吗?我想我必须使用split()
函数,但是我真的不知道如何使用它。
答案 0 :(得分:5)
将id
转换为factor
,级别从最小id
到最大。
df$id <- factor(df$id, levels = min(df$id):max(df$id))
然后可以在基数R中使用table
:
stack(table(df$id))[2:1]
或count
中的dplyr
:
library(dplyr)
df %>% count(id, .drop = FALSE)
# id n
#1 1 3
#2 2 1
#3 3 0
#4 4 2
答案 1 :(得分:4)
一个<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div id="element" onclick="changeColor(this)">hello</div>
</body>
</html>
选项可能是:
dplyr
答案 2 :(得分:3)
这是table
table(factor(df[[1]], levels = Reduce(':', range(df[[1]]))))
#1 2 3 4
#3 1 0 2
以data.frame格式:
tbl <- table(id = factor(df[[1]], levels = Reduce(':', range(df[[1]]))))
as.data.frame(tbl)
# id Freq
#1 1 3
#2 2 1
#3 3 0
#4 4 2
答案 3 :(得分:-1)
这是基于r的解决方案:
id1=c()
for(i in 1:max(df$id)){
id1[i]=length(df$id[df$id==i])}
df1=data.frame(id=1:max(df$id),nchild=id1)