相关疑难解决方法(0)

为什么`[`比`子集更好?

当我需要过滤data.frame,即提取满足特定条件的行时,我更喜欢使用该subset函数:

subset(airquality, Month == 8 & Temp > 90)
Run Code Online (Sandbox Code Playgroud)

而不是[功能:

airquality[airquality$Month == 8 & airquality$Temp > 90, ]
Run Code Online (Sandbox Code Playgroud)

我偏好有两个主要原因:

  1. 我发现代码从左到右读得更好.甚至那些对R一无所知的人也可以说出subset上面的陈述是做什么的.

  2. 因为列可以在select表达式中称为变量,所以我可以节省一些键击.在我上面的例子中,我只需输入airquality一次subset,但只输入三次[.

所以我过着幸福快乐,subset随处可见,因为它更短,读起来更好,甚至为我的R编码员提倡它的美丽.但昨天我的世界崩溃了.在阅读subset文档时,我注意到这一节:

警告

这是一种便于交互使用的便利功能.对于编程,最好使用像[的标准子集函数,特别是参数子集的非标准评估可能会产生意想不到的后果.

有人可以帮助澄清作者的意思吗?

首先,他们的意思是" 交互使用 "?我知道什么是交互式会话,而不是在BATCH模式下运行的脚本,但我不知道它应该有什么区别.

那么,请你解释一下" 论证子集的非标准评估 "以及为什么它是危险的,或许可以提供一个例子?

r subset filter r-faq

392
推荐指数
2
解决办法
9万
查看次数

什么.SD代表R中的data.table

.SD看起来很有用,但我真的不知道我在做什么.它代表什么?为什么会有前一段时间(句号).我用它时发生了什么?

我读到: .SD是一个data.table包含x每个组的数据子集,不包括组列.它可以在分组i时,分组by,键控by和_ad hoc_时使用by

这是否意味着女儿data.table被留在内存中进行下一次操作?

r data.table

159
推荐指数
3
解决办法
6万
查看次数

从1个数据帧中的多个时间序列的开始和结束中有效地删除缺失值

使用R,我试图从包含多个时间序列的数据帧的开头和结尾修剪NA值.我已经使用for循环和zoo包实现了我的目标,但正如预期的那样,它在大数据帧上效率极低.

我的数据框看起来像这样,包含3列,每个时间序列由它的唯一ID标识.在这种情况下,AAA,B和CCC.

id   date          value
AAA  2010/01/01    NA
AAA  2010/02/01    34
AAA  2010/03/01    35
AAA  2010/04/01    30
AAA  2010/05/01    NA
AAA  2010/06/01    28
B    2010/01/01    NA
B    2010/02/01    0
B    2010/03/01    1
B    2010/04/01    2
B    2010/05/01    3
B    2010/06/01    NA
B    2010/07/01    NA
B    2010/07/01    NA
CCC  2010/01/01    0
CCC  2010/02/01    400
CCC  2010/03/01    300
CCC  2010/04/01    200
CCC  2010/05/01    NA
Run Code Online (Sandbox Code Playgroud)

我想知道,如何有效地从每个时间序列的开始和结束中删除NA值,在本例中为AAA,B和CCC.所以看起来应该是这样的.

id   date          value
AAA  2010/02/01    34
AAA  2010/03/01    35
AAA  2010/04/01    30
AAA  2010/05/01    NA
AAA  2010/06/01 …
Run Code Online (Sandbox Code Playgroud)

r time-series dataframe zoo data.table

5
推荐指数
1
解决办法
2643
查看次数

标签 统计

r ×3

data.table ×2

dataframe ×1

filter ×1

r-faq ×1

subset ×1

time-series ×1

zoo ×1