我在薪资数据的CSV中有一列,其中包含以下类型的数据:
我的目标是:
" "
)到目前为止,我有data_split<- strsplit(as.character(data$salary), split=" ")
来拆分我正在寻找的列,但我得到了这个输出:
> tail(data_split)
[[1]]
[1] "£26,000" "a" "year"
[[2]]
character(0)
[[3]]
[1] "£100" "a" "day"
[[4]]
[1] "£16,107" "a" "year"
[[5]]
[1] "£15,747" "a" "year"
[[6]]
[1] "£9.00" "-" "£15.50" "an" "hour"
知道接下来要做什么吗?我在堆栈溢出时发现的难度与其他答案的关系是我正在基于数据帧的第5列上的if条件进行操作。如果我能从这个在线课程中访问我的R材料,我会很高兴,但是它们被阻止了!
答案 0 :(得分:0)
我猜你想要值和时间单位,以及指示值是否指定范围的指标。这是一种提取这些数据的方法:
valueList <- lapply(data_split,
function(x){
# isolate the strings starting with £
x = grep("^£",x,value=T)
# convert to numeric
x = as.numeric(substr(x,2,nchar(x)))})
# extract vectors with the minimum and maximum values
minValue <- lapply(valueList,min)
maxValue <- lapply(valueList,max)
# identify values specified by a range
isRange <- minValue == maxValue)
# identify the unit of time
timeUnit <- character(length(data_split))
timeUnit[grepl('year', data)] <- 'year'
timeUnit[grepl('day', data)] <- 'day'
timeUnit[grepl('month', data)] <- 'month'
timeUnit[grepl('hour,% data)] <- 'hour'