相关疑难解决方法(0)

如何在R中重写这个Stata代码?

Stata做得很好的一件事就是它构造新变量的方式(见下面的例子).在R中如何做到这一点?

foreach i in A B C D {  
    forval n=1990/2000 {  
       local m = 'n'-1  
       # create new columns from existing ones on-the-fly  
       generate pop'i''n' = pop'i''m' * (1 + trend'n')  
   }  
}  
Run Code Online (Sandbox Code Playgroud)

r stata

9
推荐指数
3
解决办法
2152
查看次数

R中的分组变量Deciles

我想找出每个分组变量的十分位数.我正在寻找使用dplyr和的方法lapply.如果你能帮助我,我会很感激.

这是我的尝试.除了调用之外我不知道如何直接拉十分位数dplyr::ntile()(这对我不起作用)

尝试1

这是我尝试使用describe()Hmisc包:

set.seed(10)
IData <- data.frame(let = sample( x = LETTERS, size = 10000, replace=TRUE), numbers = sample(x = c(1:20000),size = 10000))

Output<-IData %>% data.table::as.data.table(.) %>% split(.,by=c("let"),drop = TRUE,sorted = TRUE) %>% purrr::map(~describe(.$numbers))
Run Code Online (Sandbox Code Playgroud)

这肯定有帮助,但上面的代码存在两个问题:

a)输出(甚至列表格式)不是我要找的东西.

b)我真的不知道如何从上面的列表中提取5%,10%....

底线是我被卡住了

尝试2

我试图取代describe通过ntile,但下面的代码给了我一个输出,并没有任何意义,我因为列数不10.在运行Output[[1]],我看看〜400个的数字,而不是10的载体.

Output<-IData %>% data.table::as.data.table(.) %>% split(.,by=c("let"),drop = TRUE,sorted = TRUE) %>% purrr::map(~dplyr::ntile(.$numbers,10))
Run Code Online (Sandbox Code Playgroud)

尝试3 = 预期输出

最后,我尝试去旧学校(即复制粘贴)以获得预期的输出:

Output<-IData %>%
  dplyr::group_by(let) %>%
  dplyr::summarise( QQuantile1 = quantile(`numbers`, …
Run Code Online (Sandbox Code Playgroud)

r lapply dplyr data.table purrr

1
推荐指数
2
解决办法
1541
查看次数

标签 统计

r ×2

data.table ×1

dplyr ×1

lapply ×1

purrr ×1

stata ×1