【发布时间】:2021-11-27 01:55:00
【问题描述】:
这个问题和这个问题有关My question is about R: How to number each repetition in a table in R?
基本上重复的地方都有编号。例如两次重复: 1,2 ;三个重复:1,2,3 等...但是如果该值是唯一的(只有一次),则它应该不是1,而是NA
数据:(来自 akrun,非常感谢!)
df1 <- structure(list(Fullname = c("Peter", "Peter", "Alison", "Warren",
"Jack", "Jack", "Jack", "Jack", "Susan", "Susan", "Henry", "Walison",
"Tinder", "Peter", "Henry", "Tinder")), row.names = c(NA, -16L
), class = "data.frame")
我的解决方案是这样的:
df1 %>%
group_by(Fullname) %>%
mutate(newcol = seq_along(Fullname))
Fullname newcol
<chr> <int>
1 Peter 1
2 Peter 2
3 Alison 1
4 Warren 1
5 Jack 1
6 Jack 2
7 Jack 3
8 Jack 4
9 Susan 1
10 Susan 2
11 Henry 1
12 Walison 1
13 Tinder 1
14 Peter 3
15 Henry 2
16 Tinder 2
现在我尝试将每个出现一次的值(例如 Alison、Warren 和 Henry)设置为 NA就像 akrun 在这里所做的 My question is about R: How to number each repetition in a table in R?
我的代码使用ifelse 语句检查组的总和是否>1。
df1 %>%
group_by(Fullname) %>%
mutate(newcol = seq_along(Fullname)) %>%
mutate(newcol = ifelse(sum(newcol)>1, newcol, NA))
但我明白了:
Fullname newcol
<chr> <int>
1 Peter 1
2 Peter 1
3 Alison NA
4 Warren NA
5 Jack 1
6 Jack 1
7 Jack 1
8 Jack 1
9 Susan 1
10 Susan 1
11 Henry 1
12 Walison NA
13 Tinder 1
14 Peter 1
15 Henry 1
16 Tinder 1
我不明白为什么?
【问题讨论】:
标签: r if-statement dplyr sum