我有一个数据框df
,第一列看起来像这样:
[1] "760–563" "01455–1" "4672–04" "11–31234" "22–12" "11111–53" "111–21" "17–356239" "14–22352" "531–353"
我想将该列拆分为-
。
我正在做的是
strsplit(df[,1], "-")
问题在于它不起作用。它返回一个列表而不拆分元素。我已经尝试添加参数fixed = TRUE
并对split
参数进行常规表达,但没有任何效果。
奇怪的是,如果我自己复制专栏,例如:
myVector <- c("760–563" "01455–1" "4672–04" "11–31234" "22–12" "11111–53" "111–21" "17–356239" "14–22352" "531–353")
然后应用strsplit
,它有效。
我已经使用
检查了我的列类型和类 class(df[,1])
和typeof(df[,1])
两者都返回character
,所以很好。
我也在使用带有dplyr的数据帧,因此它的类型为tbl_df
。我把它转换回dataframe
但是也没有用。
还尝试了apply(df, 2, function(x) strsplit(x, "-", fixed = T))
,但也没有用。
任何线索?
答案 0 :(得分:5)
我不知道你是怎么做到的,但你有两种不同类型的破折号:
var dateStr = JSON.parse(date);
var realDate = new Date(dateStr);
所以charToRaw(substr("760–563", 4, 4))
#[1] 96
charToRaw("-")
#[1] 2d
工作正常,只是原始数据中没有破折号。调整一下,然后离开:
strsplit()
答案 1 :(得分:2)
您可以拆分非数字字符
library(dplyr)
library(tidyr)
data %>%
separate(your_column,
c("first_number", "second_number"),
sep = "[^0-9]")