全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
8076 9
2018-11-05
屏幕快照 2018-11-05 下午3.22.12.png


如上图所示,
想让同一个sub条件下,SD==1 条件下的 rating_indif2 减去 SD==0 条件下的rating_indif2,
这样,每一个sub,计算出一个差值。
另外需要注意,数据中SD==1 和SD==0的条件并不一定是固定的前后顺序
能不能不使用循环就能实现计算?
求大牛帮忙解答,顺便给我涨点知识。
多谢!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-11-6 10:46:51
你这不让用循环,只能用`lapply`了啊。
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-6 15:15:25
library(tidyverse)
library(magrittr)
###  此处假设 每组sub只有二行,一行sd==0,另一行sd==1
mydata%<>% arrange(sub,sd)%>%  ## 排序,保证,每组sub  中 sd==0在第一行,sd==1在第二行
                        group_by(sub)%>%
                        mutate( dif=rating_indif2-lag(rating_indif2))%>% ## dif 便是你要的值 ,sd==0 时  dif为NA
                        ungroup()   
####  若只想要dif 有值的行,可继续如下

    mydata%<>%filter(not(is.na(dif)))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-6 16:33:57
lemon.d 发表于 2018-11-6 10:46
你这不让用循环,只能用`lapply`了啊。
果然是让我学习了!!我自己其实是用循环解决的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-6 16:34:25
jgchen1966 发表于 2018-11-6 15:15
library(tidyverse)
library(magrittr)
###  此处假设 每组sub只有二行,一行sd==0,另一行sd==1
这个思路也很棒,真心是学习到了,新技能get!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-11-6 16:36:12
jgchen1966 发表于 2018-11-6 15:15
library(tidyverse)
library(magrittr)
###  此处假设 每组sub只有二行,一行sd==0,另一行sd==1
没理解错的话,你这里的%<>%是打错的,其实是指%>%, 对吧~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群