我有一个来自德国经济专家组(SOEP)的18个类似的数据框(每个数据框都代表一个调查年份),它是零件字符串和零件数字。变量(每个DF中超过200个)具有以下值
我已经尝试了sapply
-command,但是我收到了一个可转换为数据帧且没有4个Identifier-Variables的矩阵,并且仍然在我的数字前后加上了方括号(PKAL06是我的起始DF)。
PKs <- sapply(PKAL06[5:225], function(PKAL06) substr (PKAL06,1,3))
PKsD <- data.frame(PKs)
同样,我尝试了与的组合gsub
,但是它给了我NA而不是字符串。
PKas <- sapply(PKAL06,
function(PKAL06) as.numeric(gsub("([0-9]+).*$", "\\1", PKAL06)))
理想情况下,有人可以给我提示如何告诉R通过提取括号之间的内容来将整(!)数据帧的字符串变量更改为数字变量。输出应该是具有所有变量的结构相同的数据框,而不是矩阵,而不是列表。
任何帮助将不胜感激。
我从SOEP网站上收集到数据是机密的,因此请尝试以下操作:
PKas <- sapply(PKAL06,
function(PKAL06) as.numeric(gsub("\\[([0-9|\\-]+)\\].+","\\1", PKAL06)))
上面的模式似乎适用于您的示例数据。
str <- c("[1] Ja","[-2] Nein")
as.numeric(gsub("\\[([0-9|\\-]+)\\].+","\\1",str))
# [1] 1 -2
str <- c("[1] Jan Vollzeit erwerbst.","[-2] trifft nicht zu")
as.numeric(gsub("\\[([0-9|\\-]+)\\].+","\\1",str))
# [1] 1 -2
您(似乎……)想要提取方括号之间的所有内容。但是,它[
是正则表达式语法中的特殊字符,因此您必须使用\\[
或对其进行转义\\]
。上面的代码在仅接受数字或-
括号之间更进一步。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句