Mic*_*ico 6 r code-translation stata data.table
刚刚遇到一个.do我需要翻译的文件,R因为我没有Stata许可证; 我的Stata生锈了,那么有人可以确认代码是在做我认为的吗?
为了重现性,我将把它翻译成我在网上找到的数据集,特别是奶制品数据集(p004),它是Chatterjee,Hadi和Price的教科书的一部分.
这是Stata代码:
collapse (min) min_protein = protein ///
(mean) avg_protein = protein ///
(median) median_protein = protein ///
(sd) sd_protein = protein ///
if protein > 2.8, by(lactatio)
Run Code Online (Sandbox Code Playgroud)
以下是我认为它在data.table语法中的作用:
library(data.table)
library(foreign)
DT = read.dta("p004.dta")
setDT(DT)
DT[protein > 2.8,
.(min_protein = min(protein),
avg_protein = mean(protein),
median_protein = median(protein),
sd_protein = sd(protein)),
keyby = lactatio]
# lactatio min_protein avg_protein median_protein sd_protein
# 1: 1 2.9 3.162632 3.10 0.2180803
# 2: 2 2.9 3.304688 3.25 0.2858736
# 3: 3 2.9 3.371429 3.35 0.4547672
# 4: 4 2.9 3.231250 3.20 0.3419917
# 5: 5 2.9 3.855556 3.20 1.9086061
# 6: 6 3.0 3.200000 3.10 0.2645751
# 7: 7 3.3 3.650000 3.65 0.4949748
# 8: 8 3.2 3.300000 3.30 0.1414214
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
如果我在过去的18个月里使用过Stata,或者我已经安装了副本,这很容易确认 - 希望我可以弯曲某人的耳朵,而这些人都是真的.谢谢.
你的直觉是正确的。collapse是 Raggregate函数在 Stata 中的等价物,它通过将聚合函数(或多个聚合函数,每个变量一个)应用于数据集中的每个变量,从输入数据集中生成一个新数据集。
以下是示例数据集上该 Stata 命令的输出:
. list
+------------------------------------------------------+
| lactatio min_pr~n avg_pr~n median~n sd_pro~n |
|------------------------------------------------------|
1. | 1 2.9 3.162632 3.1 .2180803 |
2. | 2 2.9 3.304688 3.25 .2858736 |
3. | 3 2.9 3.371429 3.35 .4547672 |
4. | 4 2.9 3.23125 3.2 .3419917 |
5. | 5 2.9 3.855556 3.2 1.908606 |
|------------------------------------------------------|
6. | 6 3 3.2 3.1 .2645752 |
7. | 7 3.3 3.65 3.65 .4949748 |
8. | 8 3.2 3.3 3.3 .1414214 |
+------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)