Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将因子转换为日期而不产生NA';s_R - Fatal编程技术网

R 将因子转换为日期而不产生NA';s

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$

首先,我想指出,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$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