我的数据集包含两个ID'列:当前ID的一列var tasks = ["None"]
@IBOutlet weak var taskonelabel: UILabel!
@IBAction func taskbutton(_ sender: UIButton) {
tasks.append("Do Your Homework")
print(tasks)
if tasks.count > 2{
taskonelabel?.text = String(tasks[1])
}
print(taskonelabel)
,以及将观察(行)与另一个观察点["None", "Do Your Homework"]
连接起来的另一列id
。
示例数据
prev_id
在上面的示例中,第一个观察(35,10)表示它连接到第8行(10,4),第8行连接到第2行(4,3),最后连接到第3行( 3,NA)。第3行中id
的NA表示该行未连接到另一个观察点。
问题
如何创建另一个字段d <- data.frame(
id = c(35, 4, 3, 9, 5, 17, 11, 10, 8),
prev_id = c(10, 3, NA, 5, NA, NA, 8, 4, NA)
)
id prev_id
1 35 10
2 4 3
3 3 NA
4 9 5
5 5 NA
6 17 NA
7 11 8
8 10 4
9 8 NA
,为每个观察集合提供唯一标识符?
期望的结果
prev_id
答案 0 :(得分:0)
此解决方案假定存在解决方案。
我们不知道每个链的起点在哪里。但是,我们知道每个链的结尾都是prev_id
为NA
。
library('tidyverse')
d <- data.frame(
id = c(35, 4, 3, 9, 5, 17, 11, 10, 8),
prev_id = c(10, 3, NA, 5, NA, NA, 8, 4, NA)
)
首先,为链端设置id_group
。
group_df <- d %>%
filter(is.na(prev_id)) %>%
mutate(id_group = row_number()) %>%
right_join(d)
group_df
#> id prev_id id_group
#> 1 35 10 NA
#> 2 4 3 NA
#> 3 3 NA 1
#> 4 9 5 NA
#> 5 5 NA 2
#> 6 17 NA 3
#> 7 11 8 NA
#> 8 10 4 NA
#> 9 8 NA 4
然后,根据id_group
的{{1}}迭代更新id_group
。继续前进,直到不再缺少prev_id
s。
id_group