stata - 仅使用“if”折叠数据集的子集
问题描述
我试图collapse
只使用我的数据的一个子集if
,但它的下降/崩溃似乎比我预期的要多得多。
对于我使用了if
限定符的所有其他命令,该命令仅适用于符合if
条件的数据子集,而保留其余数据。
例如,replace
不改变以下数据foreign != 1
:
. sysuse auto, clear
(1978 Automobile Data)
. replace mpg = 16 if foreign == 1
(22 real changes made)
但是,它似乎collapse
适用于符合if
标准的数据并丢弃其余数据:
. count if mpg > -1
74
. * all the data has mpg > -1
. count if foreign == 1
22
. collapse (mean) mpg if foreign == 1
. count if mpg > -1
1
理论上没有理由collapse
不能以与replace
. 它可以保留所有foreign != 1
内容,同时将所有数据折叠foreign == 1
到一个观察值。
这实际上就是我想要对我的数据做的事情,那么我应该做些什么不同的事情呢?
@NickCox 很有帮助地提出了这样的建议:
. save "temp/whatever"
file temp/whatever.dta saved
. sysuse auto, clear
(1978 Automobile Data)
. drop if foreign == 1
(22 observations deleted)
. append using "temp/whatever"
(note: variable mpg was int, now float to accommodate using data's values)
这适用于这个沙盒,但我的数据集有 1000 万个观察值。如果我可以避免重新加载它,我可以为自己节省半个小时。如果我必须为多种情况执行此操作,则更多。
任何其他建议将不胜感激。
解决方案
collapse
以if
这种方式工作:
if
由条件选择的那些观察是collapse
d,通常(但不一定)到具有较少观察的新数据集中。
那些没有被选中的观察消失了。
在这方面说这个命令是不寻常的,更不用说独特了,这是不正确的。contract
并且keep
也以这种方式工作:未选择的任何内容都会消失。(社区经常要求save
使用if
: savesome
from SSC 是一种解决方法。)
如果您想要collapse
一些观察但保持其他观察不变,那么您可以尝试
A. 这个策略
A1。use
你的数据集
A2。keep if
你想要不变的东西和save
那些观察
A3。use
你的数据集再次
A4。collapse
去尝尝
A5。append
来自 A2 的数据集
sysuse auto, clear
keep if !foreign
save domestic
sysuse auto, clear
collapse mpg if foreign
gen make = "All foreign"
append using domestic
或 B. 这个:
B1。使用(如果需要创建)一个标识符,该标识符对于您想要不变的观察是唯一的(不同的),但对于您想要的观察采用单个值collapse
d
B2。collapse
将该标识符提供给by()
.
sysuse auto, clear
replace make = "All foreign" if foreign
collapse mpg, by(make)
虽然 B 在这个例子中看起来微不足道,但对我来说,它对于大型数据集总是优越的,并且如果你想继续处理许多变量,这远非显而易见。我没有尝试过对大型数据集甚至任何数据集进行时间或内存比较,因为我以前没有遇到过这个愿望。
推荐阅读
- c++ - `static_assert` 类似引发警告而不是错误的机制
- java - 如果用户不提供任何数据并单击 selenium (Java) 中的搜索,如何测试文本框中的文本颜色是否发生变化
- java - 多对多关系导致异常
- android - 活动回栈似乎丢失了
- rest - REST API 脚本需要更长的时间来执行
- sql-server - SQL Server:从不同的列中排除行号?
- kubernetes - 卷“mongo-two”的 MountVolume.SetUp 失败:lstat /var/lib/mongo:没有这样的文件或目录
- android - 使用片段中的按钮进入另一个活动
- flutter - Flutter ios 构建在带有 swift_version 的 xcode 10.1 中失败
- android - 在可扩展列表视图中将子视图膨胀到父视图之上