Хранение значений в одной строке на основе значений в другой строке и другом столбце - PullRequest
0 голосов
/ 22 апреля 2019

Есть ли способ сделать новый DF для значений в tdif только тогда, когда NP==0 в строке прямо над ней?

    Subject tdif NP
1       KM3 63.8  0
2       KM3  4.6  1
3       KM3 70.6  0
4       KM3 30.4  1
5       KM3 44.8  0
6       KM3 12.1  1
7       KM3 27.1  1
8       KM3 36.0  0
9       KM3 38.0  1
10      KM3  0.1  1

Итак, желаемый вывод будет:

    Subject tdif NP
1       KM3  4.6  1
2       KM3 30.4  1
3       KM3 12.1  1
4       KM3 38.0  1

Я счастлив использовать tidyverse или любые другие пакеты (я использовал его для манипулирования моими необработанными данными вэтот момент), но я до сих пор чертовски долго находил помощь для этого конкретного типа манипулирования данными в R.

1 Ответ

0 голосов
/ 22 апреля 2019

Мы могли бы использовать which, чтобы получить индекс строки, где NP == 0, и добавить 1 к нему, чтобы получить следующую строку.

df[which(df$NP == 0) + 1, ]

#  Subject tdif NP
#2     KM3  4.6  1
#4     KM3 30.4  1
#6     KM3 12.1  1
#9     KM3 38.0  1

Если у вас есть 0 в вашей последней строке, это может дать вамдополнительная строка с NA s, которую можно удалить, сравнив значения с nrow(df) или используя dplyr::lag.


с dplyr lag

library(dplyr)
df %>% filter(lag(NP) == 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...