-1

次のような列を持つRのデータフレームがあります。

Venue
AAA 2001
BBB 2016
CCC 1996
... ....
ZZZ 2007

データフレームの操作を少し簡単にするために、次のように会場の列を場所と年の 2 つの列に分割したいと考えました。

Location Year
AAA      2001
BBB      2016
CCC      1996
...      ....
ZZZ      2007

cSplit()これを実現するために、関数のさまざまなバリエーションを試しました。

df = cSplit(df, "Venue", " ") #worked somewhat, however issues with places with multiple words (e.g. Los Angeles, Rio de Janeiro)
df = cSplit(df, "Venue", "[:digit:]")
df = cSplit(df, "Venue,", "[0-9]+")

これまでのところ、これらのどれも機能しませんでした。誰かが私を正しい方向に向けることができれば幸いです。

4

2 に答える 2

0

最も簡単な方法stringrは、自動的にベクトル化されたものを使用することです

library(stringr)

df[,1:2] <- str_split(df$Venue, pattern = "\\s+(?=\\d)", simplify = TRUE)
colnames(df) <- c('Location', 'Year')

またはstr_split_fixed

str_split_fixed(df$Venue, pattern = "\\s+(?=\\d)", 2)

ベースRで行うこともできます

df[,1:2] <- do.call(rbind, strsplit(df$Venue, split = "\\s+(?=\\d)", perl = TRUE))
colnames(df) <- c('Location', 'Year')
于 2016-11-10T18:19:35.707 に答える
0

これはどう?

d <- data.frame(Venue = c("AAA 2001", "BBB 2016", "CCC 1996", "cc d 2001"),
         stringsAsFactors = FALSE)

d$Location <- gsub("[[:digit:]]", "", d$Venue)
d$Year <- gsub("[^[:digit:]]", "", d$Venue)
d
#       Venue Location Year
# 1  AAA 2001     AAA  2001
# 2  BBB 2016     BBB  2016
# 3  CCC 1996     CCC  1996
# 4 cc d 2001    cc d  2001
于 2016-11-10T18:20:29.000 に答える