我想知道如何能够将作者姓名从学年中拆分并将它们分成不同的列。我拥有的数据框如下:
df <-
Study N
John et al., 2003 10
Nich et al., 1988 15
结果应该是:
df <-
Study Year N
John et al., 2003 10
Nich et al., 1988 15
我正在使用R。
答案 0 :(得分:1)
您可以使用正则表达式来选择两个部分
df$Year <- gsub("^.*, ", "", df$Study) #remove everything before ", "
df$Study <- gsub(",.*$", "", df$Study) #remove everything after ","
答案 1 :(得分:0)
你也可以从tidyr中提取。
library(dplyr)
library(tidyr)
df %>%
extract(Study, c("Author", "Year"), "(.*), ([0-9]{4})")
答案 2 :(得分:0)
我们也可以使用data.table
。我们转换了&#39; data.frame&#39;到&#39; data.table&#39; (setDT(df)
,使用tstrsplit
拆分&#39;研究&#39;并使用setnames
更改列名称。
library(data.table)#v1.9.6+
setnames(setDT(df)[, c(tstrsplit(Study, '(?<=,) ', perl=TRUE),
list(N=N))], 1:2, c('Year', 'Study'))[]
# Year Study N
#1: John et al., 2003 10
#2: Nich et al., 1988 15