Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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 从特定行获取数据_R_Subset_Rows - Fatal编程技术网

R 从特定行获取数据

R 从特定行获取数据,r,subset,rows,R,Subset,Rows,我试图使用以下代码从2007年2月1日和2007年2月2日这两个日期提取数据 exdata1 <- exdata[c(01/02/2007,02/02/2007),] exdata1您的代码很好,只是没有指定要筛选的列: exdata[c(01/02/2007,02/02/2007),]vs exdata[日期列%c(2007年2月1日,2007年2月2日),][/p>没有数据的原因很简单:在数据本身中指定的日期不同:不是2007年2月1日和2007年2月2日而是2007年2月1日和20

我试图使用以下代码从2007年2月1日和2007年2月2日这两个日期提取数据

exdata1 <- exdata[c(01/02/2007,02/02/2007),]

exdata1您的代码很好,只是没有指定要筛选的列:
exdata[c(01/02/2007,02/02/2007),]vs

exdata[日期列%c(2007年2月1日,2007年2月2日),][/p>没有数据的原因很简单:在数据本身中指定的日期不同:不是
2007年2月1日
2007年2月2日
而是
2007年2月1日
2007年2月2日
。此外,
Date
列是一个factor列(参见
str(数据)
)。要访问系数,可以在日期周围使用引号:

example <- data[data$Date=="1/2/2007"|data$Date=="2/2/2007",]
head(example)
          Date     Time Global_active_power Global_reactive_power Voltage Global_intensity Sub_metering_1
66637 1/2/2007 00:00:00               0.326                 0.128 243.150            1.400          0.000
66638 1/2/2007 00:01:00               0.326                 0.130 243.320            1.400          0.000
66639 1/2/2007 00:02:00               0.324                 0.132 243.510            1.400          0.000
66640 1/2/2007 00:03:00               0.324                 0.134 243.900            1.400          0.000
66641 1/2/2007 00:04:00               0.322                 0.130 243.160            1.400          0.000
66642 1/2/2007 00:05:00               0.320                 0.126 242.290            1.400          0.000
      Sub_metering_2 Sub_metering_3
66637          0.000              0
66638          0.000              0
66639          0.000              0
66640          0.000              0
66641          0.000              0
66642          0.000              0

example您的努力表明了对R语言如何工作的一些误解。要查看“[”函数的
i
位置中的向量R“认为”是什么,只需在控制台中键入向量代码:

c(01/02/2007,02/02/2007)
[1] 0.0002491281 0.0004982561
因此,您实际上提交了一个包含接近零的小数点的数字向量。您可以使用数字向量进行选择,但它们必须是大于1的整数。即使您知道R不打算将其用作日期,并尝试将其格式化为R“日期”-如果将这些日期作为索引,您仍然无法成功,因为R日期实际上是表示自1970年1月1日以来天数的整数,并且这些日期将被取为非常大的值(13545和13546):


dput(exdata)
共享您的数据这是耗电量txt文件exdata是我在读取这样的数据read.table(“househouse_power_consumption.txt”,header=TRUE,sep=“;”)首先,处理实际日期并强制执行
exdata$Date或
子集(exdata,日期%d)
。嘿,非常感谢你,head()现在显示了有用的信息。有没有强制日期的原因?谢谢你,我正试图尽快学习r,但基本知识似乎还需要一段时间才能消化。我的建议是从学习基本的原子类开始:“字符”、“数字”、“逻辑”属性为“factor”、“Date”和“POSIXct”的类以及更灵活的“list”和“data.frame”类“。请尝试阅读任何抛出错误的函数的帮助页,并尝试了解每个函数如何具有有限数量的类,它将为其各种参数接受这些类。这是完全不正确的。请了解R中数字和字符类表达式之间的区别。”。
c(01/02/2007,02/02/2007)
[1] 0.0002491281 0.0004982561
dput( as.Date(c("01/02/2007","02/02/2007"), format="%d/%m/%Y") )
# structure(c(13545, 13546), class = "Date")

mydf = data.frame( d=as.Date( c("01/02/2007","02/02/2007"), format="%d/%m/%Y") , letters[1:2] )
mydf
#------------
           d letters.1.2.
1 2007-02-01            a
2 2007-02-02            b

mydf[ as.Date( c("01/02/2007","02/02/2007"), format="%d/%m/%Y") , ]
#----------------
        d letters.1.2.
NA   <NA>         <NA>
NA.1 <NA>         <NA>
 mydf$d %in% as.Date( c("01/02/2007","02/02/2007"), format="%d/%m/%Y") 
[1] TRUE TRUE

 mydf[ mydf$d %in% as.Date( c("01/02/2007","02/02/2007"), format="%d/%m/%Y") , ]
           d lets
1 2007-02-01    a
2 2007-02-02    b