抱歉,如果这是重复项,我发现了许多答案,您可以在其中将数据框中的值更改为基于另一列的数字或字符串,但是在尝试根据该值更改每个值时,它似乎不起作用。
因此,我尝试使用一些答案,例如,我读了R-根据其他列中的条件在一个列中更新值
现在看一下我的数据:
class(df[1,1])
[1] "character"
>df[1,1]
[1] "2015-03-01T00:00:00Z"
>as.Date(df[1,1])
[1] "2015-03-01"
所以我知道我可以将数据转换为想要的样子。然而:
> df$a[df$b=="start"] <- as.Date(df$a[df$b=="start"])
> df[1,1]
[1] "16495"
我可以将它们全部更改为一个字符串,但是当我尝试as.Date
对每个值执行操作时,由于某种原因,它会返回一个奇怪的数字
我很快尝试了:
lapply(df, function(x){if(df$b=="experience.start"){df$a<-as.Date(df$a)}})
尽管正确的值已打印到控制台,但我不知道如何使用它来编辑数据框。
据我所知,您不能这样做,因为您试图创建一个列值属于character
andDate
类的列。不,您可以通过两种方式解决问题。
第一个解决方案
您可以通过newdates
这种方式创建另一列:
df$newdates <- as.Date(NA)
df$newdates[df$b == "experience.start"] <- as.Date(df$a[df$b == "experience.start"])
使用此代码,您将NA
填充一些行,因为并非所有行的b
列都等于experience.start
。
第二解决方案
你可以同意的妥协和转换Date
中character
:
df$a[df$b == "experience.start"] <- as.character(as.Date(df$a[df$b=="experience.start"]))
这样,a
列的类型将为character
,当b
等于时,experience.start
您将以这种格式找到日期:2015-03-04
否则,格式将为2011-02-11T00:00:00Z
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句