Расщепление столбца R - PullRequest
0 голосов
/ 07 июня 2018

Я довольно плохо знаком с R.Я пытаюсь убрать ценность с;и добавьте его в качестве значения в новый столбец, пока он не встретит другое значение с;.Теперь это значение предшествует;будет значением в этом новом столбце.

спасибо!

enter image description here

Результат:

enter image description here

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Другое решение, использующее fill из tidyr (с данными @ akrun):

library(dplyr)
library(tidyr)

df1 %>%
  mutate(v2 = if_else(grepl(';', v1), as.numeric(sub(';', '', v1)), NA_real_)) %>%
  fill(v2) %>%
  filter(!grepl(';', v1))

Результат:

        v1 v2
1    12345 10
2    67890 10
3 11121314 10
4    85642 10
5    19654 10
6     5642 11
7     9987 11
8    22365 11
9     5589 13
0 голосов
/ 07 июня 2018

Мы создаем группу на основе вхождения ;, а затем получаем первый элемент 'v1' в качестве нового столбца

library(dplyr)
df1 %>%
    group_by(grp = cumsum(grepl(";", v1))) %>%
    mutate(new = as.numeric(sub(";", "", first(v1)))) %>% 
    filter(!grepl(";", v1)) %>%
    ungroup %>%
    select(-grp)
# A tibble: 9 x 2
#  v1         new
#  <chr>    <dbl>
#1 12345       10
#2 67890       10
#3 11121314    10
#4 85642       10
#5 19654       10
#6 5642        11
#7 9987        11
#8 22365       11
#9 5589        13

data

df1 <- data.frame(v1 = c('10;', 12345, 67890, 11121314, 85642, 19654, 
   '11;', 5642, 9987, 22365, '13;', 5589), stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...