R - 使用str_split和unlist创建两列

j r*_*iot 8 r strsplit

我有一个数据集,在同一列中有日期和利率.我需要将这两个数字拆分为两个单独的列,但是当我使用以下代码时:

 Split <- str_split(df$Dates, "[ ]", n = 2)
 Dates <- unlist(Split)[1]
 Rates <- unlist(Split)[2]
Run Code Online (Sandbox Code Playgroud)

它仅返回每个元素的第一个"值",即日期的"1971-04-01"和费率的"7.43".我需要它返回字符串拆分部分的所有值,并为字符串拆分的第二部分返回相同的值

下面是数据集的一部分,总行数= 518.

    1971-04-01   7.31
    1971-05-01   7.43
    1971-06-01   7.53
    1971-07-01   7.60
    1971-08-01   7.70
    1971-09-01   7.69
    1971-10-01   7.63
    1971-11-01   7.55
    1971-12-01   7.48
    1972-01-01   7.44
Run Code Online (Sandbox Code Playgroud)

谢谢

Dav*_*urg 11

能做

Split <- strsplit(as.character(df$Dates), " ", fixed = TRUE)
Dates <- sapply(Split, "[", 1)
Rates <- sapply(Split, "[", 2)
Run Code Online (Sandbox Code Playgroud)


mne*_*nel 6

您可以使用 reshape2::colsplit

library(reshape2)
colsplit(df$Dates, ' ', names =  c('Dates','Rates'))
#         Dates Rates
# 1  1971-04-01  7.31
# 2  1971-05-01  7.43
# 3  1971-06-01  7.53
# 4  1971-07-01  7.60
# 5  1971-08-01  7.70
# 6  1971-09-01  7.69
# 7  1971-10-01  7.63
# 8  1971-11-01  7.55
# 9  1971-12-01  7.48
# 10 1972-01-01  7.44
Run Code Online (Sandbox Code Playgroud)

  • 现在您还可以查看执行相同操作的 `tidyr::separate()` (3认同)