作者celestialgod (天)
看板R_Language
标题Re: [问题]判断资料值後做资料整理
时间Wed Sep 21 12:37:20 2016
※ 引述《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))
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.233.137.225
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1474432642.A.0F7.html
1F:推 a78998042a: 这个会把新手吓死吧w 09/22 02:02
有能力就早点掌握好的工具,不用在那浪费时间用那些没效率的函数
而且大多数新手应该都只是处理表格式资料
类似SQL语法的dplyr很适合直接学习
而data.table会稍难,这个套件新手要摸熟才会需要花不少时间
※ 编辑: celestialgod (36.233.137.225), 09/22/2016 02:44:15
2F:推 cywhale: 现在教别人R都在想要用以前dataframe那一套还是直接新的 09/22 12:58
3F:→ andrew43: 我支持有能力者往新开发的function选择。 09/23 04:58
4F:→ andrew43: 以效率、易读性和降低错误的方向来看,都很值得学习。 09/23 04:59