在dplyr中使用’window’函数
发布时间:2020-12-14 02:53:10 所属栏目:Windows 来源:网络整理
导读:我需要按顺序处理数据帧的行,但需要回顾某些行.这是一个近似的例子: library(dplyr)d - data_frame(trial = rep(c("A","a","b","B","x","y"),2))d - d %% mutate(cond = rep('',n()),num = as.integer(rep(0,n())))for (i in 1:nrow(d)){ if(d$trial[i] ==
我需要按顺序处理数据帧的行,但需要回顾某些行.这是一个近似的例子:
library(dplyr) d <- data_frame(trial = rep(c("A","a","b","B","x","y"),2)) d <- d %>% mutate(cond = rep('',n()),num = as.integer(rep(0,n()))) for (i in 1:nrow(d)){ if(d$trial[i] == "A"){ d$num[i] <- 0 d$cond[i] <- "A" } else if(d$trial[i] == "B"){ d$num[i] <- 0 d$cond[i] <- "B" } else{ d$num[i] <- d$num[i-1] +1 d$cond[i] <- d$cond[i-1] } } 结果数据框看起来像 > d Source: local data frame [12 x 3] trial cond num 1 A A 0 2 a A 1 3 b A 2 4 B B 0 5 x B 1 6 y B 2 7 A A 0 8 a A 1 9 b A 2 10 B B 0 11 x B 1 12 y B 2 使用dplyr执行此操作的正确方法是什么? 解决方法
dlpyr-only解决方案:
d %>% group_by(i=cumsum(trial %in% c('A','B'))) %>% mutate(cond=trial[1],num=seq(n())-1) %>% ungroup() %>% select(-i) # trial cond num # 1 A A 0 # 2 a A 1 # 3 b A 2 # 4 B B 0 # 5 x B 1 # 6 y B 2 # 7 A A 0 # 8 a A 1 # 9 b A 2 # 10 B B 0 # 11 x B 1 # 12 y B 2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xaml – 在Bing Maps上为Metro应用程序设置标记引脚的动画
- windows下安装scala环境和ide
- windows-server-2008 – 防止RDP回复域名
- 如何在Windows 10 Enterprise上运行应用程序作为shell替换
- Windows版 SQL Server 2017 AlwaysOn AG 自动初始化测试报告
- windows-server-2003 – Windows 2003 ODBC问题 – 错误100
- 限制对.NET程序集的访问?
- Windows和Native API中的系统调用?
- windows – 使用Powershell,如果最近的事件日志事件超过一小
- Windows – Application.Current在ElementHost为null
推荐文章
站长推荐
热点阅读