Re: [问题] 判断资料值后做资料整理

楼主: celestialgod (天)   2016-09-21 12:37:20
※ 引述《amygm307 (简单点ˇ)》之铭言:
: 判断B栏值为0的那一列,为整笔资料的第一列
: 变成
: A B
: 1 1 0
: 2 1 5
: 3 3 na
: 因为我每笔资料B为0的位置都不一样
: 目前想到的作法是用if去判断df$B==0时回传该值为第几列
: 然后再删掉前面资料df[-i,]
: 但是我不知道"回传第几列"应该怎么写
: 拜托各位大大帮帮小妹ˊˋ
: 一直找不到有用的解法
1.
library(data.table)
dt <- data.table(A = c(1,1,1,1,1,3), B = c(3,1,2,0,5,NA))
dt[ , rn := .I][rn >= which(B == 0)]
2.
library(dplyr)
df <- data.frame(A = c(1,1,1,1,1,3), B = c(3,1,2,0,5,NA))
df %>>% mutate(rn = 1:nrow(.)) %>>% filter(rn >= which(B == 0))
作者: a78998042a (Benjimine)   2016-09-22 02:02:00
这个会把新手吓死吧w
作者: cywhale (cywhale)   2016-09-22 12:58:00
现在教别人R都在想要用以前dataframe那一套还是直接新的
作者: andrew43 (讨厌有好心推文后删文者)   2016-09-23 04:58:00
我支持有能力者往新开发的function选择。以效率、易读性和降低错误的方向来看,都很值得学习。

Links booklink

Contact Us: admin [ a t ] ucptt.com