R 将因子转换为日期而不产生NA';s
首先,我想指出,stackoverflow中提出的其他问题并不能让我得到正确的答案。因为我不允许对任何问题发表评论,所以我就在这里做这个条目R 将因子转换为日期而不产生NA';s,r,R,首先,我想指出,stackoverflow中提出的其他问题并不能让我得到正确的答案。因为我不允许对任何问题发表评论,所以我就在这里做这个条目 head(mw1) Datum Schluss 1 19.07.2010 1.089,31 2 19.07.2010 1.093,51 3 19.07.2010 1.088,38 4 19.07.2010 1.110,10 5 19.07.2010 1.117,45 6 19.07.2010 1.129,74 请注意,mw1$
head(mw1)
Datum Schluss
1 19.07.2010 1.089,31
2 19.07.2010 1.093,51
3 19.07.2010 1.088,38
4 19.07.2010 1.110,10
5 19.07.2010 1.117,45
6 19.07.2010 1.129,74
请注意,mw1$Datum
是一个系数,如果我想通过运行as.date(mw1$Datum)
将其转换为日期,则会出现以下错误:
Error in charToDate(x) :
character string is not in a standard unambiguous format
根据这里提出的其他问题,可能的解决办法是:
mw1$Datum <- factor("19.07.2010")
as.Date(mw1$Datum, format = "%d/%m/%y")
mw1$Datum让我们一步一步来做
步骤0:创建数据帧
好的,我们有指定的因素。
====================================================================
步骤2:转换日期列
好了,现在我们有约会了强>
====================================================================
步骤3:转换数字列
现在它们是数字
此视图不显示小数点后的数字,但不用担心,它们仍然存在。
====================================================================
步骤3:结果
看起来没有太大的不同,但现在您可以使用此数据进行进一步的计算和转换。请重新检查您的格式。
我也尝试了大写字母y,但这并不能解决您需要的问题:格式=“%d.%m.%y”
您期望的是什么?这就是mw1$Datum
所等于的,它的所有值。所有的“想法”都已经在注释中提供了。请务必花时间学习?as.Date
,包括示例。感谢您的解释
df <- read.table(header = T, text = "Datum Schluss
1 19.07.2010 1.089,31
2 19.07.2010 1.093,51
3 19.07.2010 1.088,38
4 19.07.2010 1.110,10
5 19.07.2010 1.117,45
6 19.07.2010 1.129,74")
> str(df)
'data.frame': 6 obs. of 2 variables:
$ Datum : Factor w/ 1 level "19.07.2010": 1 1 1 1 1 1
$ Schluss: Factor w/ 6 levels "1.088,38","1.089,31",..: 2 3 1 4 5 6
# Read Datum as a date in the specified format and put it back into df.
# %d = day of the month
# %m = month
# %Y = year
# Don't forget the points between the numbers as we have them in the data.
df$Datum <- as.Date(df$Datum, format = "%d.%m.%Y")
> str(df)
'data.frame': 6 obs. of 2 variables:
$ Datum : Date, format: "2010-07-19" ...
$ Schluss: Factor w/ 6 levels "1.088,38","1.089,31",..: 2 3 1 4 5 6
# Remove the 1000's marks
df$Schluss <- gsub("\\.", "", df$Schluss)
# Change decimal commas into points
df$Schluss <- gsub("\\,", "\\.", df$Schluss)
# Convert into numeric
df$Schluss <- as.numeric(df$Schluss)
> str(df)
'data.frame': 6 obs. of 2 variables:
$ Datum : Date, format: "2010-07-19" ...
$ Schluss: num 1089 1094 1088 1110 1117 ...
> df
Datum Schluss
1 2010-07-19 1089.31
2 2010-07-19 1093.51
3 2010-07-19 1088.38
4 2010-07-19 1110.10
5 2010-07-19 1117.45
6 2010-07-19 1129.74