2017-02-11 100 views
1

我有一个数据框/ tibble,看起来像下面这样。多行分割列表[R]

# # A tibble: 2 × 3 
#  from_id    created_time  text 
#   <chr>     <chr> <list> 
# 1 10113538711 2017-02-10T23:33:01+0000 <chr [3]> 
# 2 10113538711 2017-02-10T05:41:39+0000 <chr [5]> 

我想从文本列出过行传播list项目,所以它看起来像下面这样。

# # A tibble: 2 × 3 
#   from_id    created_time        text 
#   <chr>     <chr>        <chr> 
# 1 10113538711 2017-02-10T23:33:01+0000 "earlier this week we received ..." 
# 1 10113538711 2017-02-10T23:33:01+0000 "lance payne's photo struck a c..." 
# 1 10113538711 2017-02-10T23:33:01+0000 "this is his story:" 
# 2 10113538711 2017-02-10T05:41:39+0000 "i'm melting, but extreme heat ..." 
# 2 10113538711 2017-02-10T05:41:39+0000 "place the container in an area..." 
# 2 10113538711 2017-02-10T05:41:39+0000 "please share far and wide." 
# 2 10113538711 2017-02-10T05:41:39+0000 "thank you." 
# 2 10113538711 2017-02-10T05:41:39+0000 "photo © tanya-dee johnson" 

我想试试tidy::separate()但这在我的用法中没有用。我怀疑这是某种形式的拆分,或者分开,然后是gather()melt(),但是我的R词汇目前让我失望。

任何这方面的援助将不胜感激。

我的tibble DPUT。

> dput(df) 

structure(list(from_id = c("10113538711", "10113538711"), created_time = c("2017-02-10T23:33:01+0000", 
"2017-02-10T05:41:39+0000"), text = structure(list(c("earlier this week we received shocking photos of a turtle hatchling emerging beside a lump of coal at mackay's east point beach near hay point – the largest coal port alongside the great barrier reef.", 
"lance payne's photo struck a chord around the country.", "this is his story:" 
), c("i'm melting, but extreme heat causes significant stress particularly for all animals.", 
"place the container in an area where animals are protected from predators when drinking eg near a shrub or bush and keep your pets away from this area so that animals can drink undisturbed.", 
"please share far and wide.", "thank you.", "photo © tanya-dee johnson" 
)), class = c("get_sentences", "list"))), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -2L), .Names = c("from_id", 
"created_time", "text")) 

回答

2

我们可以使用unnest

library(tidyverse) 
unnest(df) 
+1

真快!我现在接受答案,所以不会让我。我知道这是一个词汇问题。 – Dan

+0

@Dan'reshape2'的'melt'和'tidyr'的'gather'用于从'wide'格式转换为'long'格式,并且不会触及'list'列。 – akrun

+1

是的,我知道他们这样做了,我只是认为可能需要某种功能,会导致列表被拆分。显然'unnest()'很容易。 – Dan