【发布时间】:2019-03-21 08:17:08
【问题描述】:
我有这样的数据框
#dt
# one two row MAX_row three four
#1: a 1 0 2 yes yes
#2: a 2 2 2 yes yes
#3: a 3 0 2 no yes
#4: b 1 0 5 yes no
#5: b 2 5 5 no no
#6: b 3 0 5 no no
要创建变量 row 和 MAX_row,我生成的代码如下:
dt$row <-ifelse(dt$two == 2,rownames(dt), 0)
dt <- dt %>% group_by(one) %>% mutate(MAX_row=max(row))
我现在要做的是用第三列中的行中的值填写第四列。行号在列 MAX_row 中指示。因此,在第四列中,第一列中带有“a”的行应该是第三列中第 2 行的值,就像我在 dt 中显示的那样。 我认为如下代码可以,但它会产生奇怪的值:
dt$four <- ifelse(dt$one=='a',dt$three[dt$MAX_row],0)
有什么想法吗?
【问题讨论】:
-
为什么混合
data.table和dplyr语法?最好留在一个框架内。 -
另外,
row也是一个函数,所以你最好用其他名字来调用你的变量
标签: r dataframe data-extraction