#r #list #dataframe #join
#r #Список #фрейм данных #Присоединиться
Вопрос:
У меня есть куча предложений, которые совпадают с датой и уникальным идентификатором. Я хочу сделать каждую строку новым словом, но сохранить его в соответствии с датой и уникальным идентификатором. Итак
| I am happy | 24/12 | 3 |
Изменится на
| I | 24/12 | 3 |
| am | 24/12 | 3 |
| happy | 24/12 | 3 |
Мне это нужно в форме фрейма данных.
Комментарии:
1. не могли бы вы, пожалуйста, ввести псевдокод? таким образом, мы поможем вам точно
Ответ №1:
Мы можем просто использовать separate_rows
library(tidyr)
separate_rows(df, V1)
-вывод
# A tibble: 3 x 3
# V1 V2 V3
# <chr> <chr> <int>
#1 I 24/12 3
#2 am 24/12 3
#3 happy 24/12 3
данные
df <- structure(list(V1 = "I am happy", V2 = "24/12", V3 = 3L),
class = "data.frame", row.names = c(NA, -1L))
Ответ №2:
Попробуйте это:
library(dplyr)
library(tidyr)
#Data
df <- data.frame(val='I am happy | 24/12 | 3',stringsAsFactors = F)
#Code
new <- df %>% separate(val,into = paste0('V',1:3),sep='\|') %>%
mutate(across(everything(),~trimws(.))) %>%
separate_rows(V1,sep = ' ') %>%
mutate(V3=as.numeric(V3))
Вывод:
# A tibble: 3 x 3
V1 V2 V3
<chr> <chr> <dbl>
1 I 24/12 3
2 am 24/12 3
3 happy 24/12 3
Ответ №3:
Я думаю, вы можете попробовать unnest
fread
unnest(
fread(text = paste0(s, "n"))[
, V1 := .(strsplit(V1, " "))
], V1
)
что дает
# A tibble: 3 x 3
V1 V2 V3
<chr> <chr> <int>
1 I 24/12 3
2 am 24/12 3
3 happy 24/12 3
Данные
s <- "I am happy | 24/12 | 3"
Ответ №4:
Если ваш фрейм данных похож :
df <- structure(list(V1 = "I am happy", V2 = "24/12", V3 = 3L),
class = "data.frame", row.names = c(NA, -1L))
df
# V1 V2 V3
#1 I am happy 24/12 3
Вы можете использовать unnest_tokens
from tidytext
.
df1 <- tidytext::unnest_tokens(df, V1, V1, to_lower = FALSE)
df1
# V1 V2 V3
#1 I 24/12 3
#1.1 am 24/12 3
#1.2 happy 24/12 3