小编ℕʘʘ*_*ḆḽḘ的帖子

如何在循环中使用tidyeval函数?

考虑这个简单的例子

library(dplyr)

dataframe <- data_frame(id = c(1,2,3,4),
                        group = c('a','b','c','c'),
                        value = c(200,400,120,300))


> dataframe
# A tibble: 4 x 3
     id group value
  <dbl> <chr> <dbl>
1     1     a   200
2     2     b   400
3     3     c   120
4     4     c   300
Run Code Online (Sandbox Code Playgroud)

这个tidyeval函数用于dplyr根据某些输入列聚合我的数据

func_tidy <- function(data, mygroup){
  quo_var <- enquo(mygroup)

  df_agg <- data %>% 
    group_by(!!quo_var) %>% 
    summarize(mean = mean(value, na.rm = TRUE),
              count = n()) %>% 
    ungroup()

  df_agg
}
Run Code Online (Sandbox Code Playgroud)

现在,这有效

> func_tidy(dataframe, group) …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyeval

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

如何只对pandas中组内的某些行进行排序?

我有一个df按组分组的数据框ID.对于每个组,有一行具有标识其第一个实例的标志'First' == 1.

我最终希望通过admit date对每个组进行排序,但是,我需要将该'First' == 1行作为该组的第一行,而不管其日期.然后我想根据允许日期对剩余的行进行排序.

样品df:

ID     admit     discharge    discharge_location   first
20     3-4-2018  3-6-2018     Home                 1
20     2-2-2018  2-6-2018     Home                 0
20     2-5-2018  2-23-2018    Home                 0
30     1-2-2018  2-3-2018     Home                 0
30     1-15-2018 1-18-2018    Home                 1
30     1-20-2018 1-24-2018    Home                 0
Run Code Online (Sandbox Code Playgroud)

预期df:

ID     admit     discharge    discharge_location   first
20     3-4-2018  3-6-2018     Home                 1
20     2-2-2018  2-6-2018     Home                 0
20     2-5-2018  2-23-2018    Home                 0
30     1-15-2018 1-18-2018    Home …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何提取最长的匹配?

考虑这个简单的例子

library(stringr)
library(dplyr)

dataframe <- data_frame(text = c('how is the biggest ??',
                                 'really amazing stuff'))

# A tibble: 2 x 1
  text                 
  <chr>                
1 how is the biggest ??
2 really amazing stuff 
Run Code Online (Sandbox Code Playgroud)

我需要基于regex表达式提取一些术语,但仅提取最长的术语

到目前为止,我只能使用提取第一个匹配项(不需要最长的匹配项)str_extract

> dataframe %>% mutate(mymatch = str_extract(text, regex('\\w+')))
# A tibble: 2 x 2
  text                  mymatch
  <chr>                 <chr>  
1 how is the biggest ?? how    
2 really amazing stuff  really 
Run Code Online (Sandbox Code Playgroud)

我尝试一起玩,str_extract_all但是找不到有效的语法。输出应为:

# A tibble: 2 x 2
  text …
Run Code Online (Sandbox Code Playgroud)

regex r stringr purrr

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

围绕轴标签绘制彩色框

考虑这个简单的例子

library(tidyverse)
tibble(x = as.factor(c('good', 'neutral', 'bad')),
       y = as.factor(c('bad', 'neutral', 'bad'))) %>% 
  ggplot(aes(x = x, y = y)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我想提出的X标签(goodneutralbad)以不同的颜色框。例如,good(在x轴和y轴上)将被一个小绿色框包围,依此类推。

我可以在里面做ggplot2吗?

r ggplot2

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

如何使用data.table中的cmd删除不良行?

我有一个csv.gz文件,其内容如下所示:

bogusfile <- '1,2,3
1,2,3
2,,3
1,2,3,4
1,2,3
1,2,3
1,2,3'
Run Code Online (Sandbox Code Playgroud)

知道只有3列,但有时会弹出一个额外的伪造的第4列,使我的解析混乱fread

幸运的是cmd在中有一个命令fread。我们如何使用它来丢弃包含恰好超过2个逗号的所有行(这些行会带有多余的列)。

fread(cmd = ' linux magic to clean myfile.csv.gz')什么?

我无法使其工作。你怎么看?谢谢!

r data.table

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

pandas返回数据框中不在其他数据帧中的列

我有两个看起来像这样的数据帧:

df_1 = pd.DataFrame({
'A' : [1.0, 2.0, 3.0, 4.0],
'B' : [100, 200, 300, 400],
'C' : [2, 3, 4, 5] 
                   })

df_2 = pd.DataFrame({
'B' : [1.0, 2.0, 3.0, 4.0],
'C' : [100, 200, 300, 400],
'D' : [2, 3, 4, 5] 
                  })
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用pandas .isin函数,我可以做一些漂亮的事情

>>> print df_2.columns.isin(df_1.columns)
array([ True,  True, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

BCdf_2存在于df_1同时D

我的问题是:有没有人知道如何返回df_2中存在但不存在于df_1中的列的列标签

这样的事情

array([u'D'], dtype=string)
Run Code Online (Sandbox Code Playgroud)

先感谢您!

python pandas

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

stringr:查找任何列内容与正则表达式匹配的行

请考虑以下示例

> data_text <- data.frame(text = c('where', 'are', 'you'),
                        blob = c('little', 'nice', 'text'))
> data_text
# A tibble: 3 x 2
   text   blob
  <chr>  <chr>
1 where little
2   are   nice
3   you   text
Run Code Online (Sandbox Code Playgroud)

我想打印包含正则表达式的行text(即第3行)

问题是,我有数百列,我不知道哪一列包含这个字符串.str_detect一次只能使用一列...

我怎么能用stringr包装呢?谢谢!

regex r stringr

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

如何以最小的格式将数据框导出到乳胶?

考虑这个简单的例子

library(dplyr)
dataframe <- data_frame(mytext1 = c('HELLO',
                                   'WORLD'),
                        mytext2 = c('HELLO',
                                   'AGAIN'),
                        value1 = c(1,2), 
                        value2 = c(1,2))

# A tibble: 2 x 4
  mytext1 mytext2 value1 value2
    <chr>   <chr>  <dbl>  <dbl>
1   HELLO   HELLO      1      1
2   WORLD   AGAIN      2      2
Run Code Online (Sandbox Code Playgroud)

我想将此数据框导出到乳胶表,但进行一些小的(但重要的)调整。

特别是,我想在乳胶输出中添加一个分隔文本变量的超级列和另一个分隔数字变量的超级列。mat也就是说,本图像中的某些内容com

在此输入图像描述

我尝试了 R 包xtabletables但无法实现接近的目标(可能是因为它们创建了汇总统计表)。我在这里错过了什么吗?

谢谢!

latex r xtable stargazer

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

如何加速行级别的重新索引?

考虑下面的例子

import pandas as pd
import numpy as np

myidx = pd.date_range('2016-01-01','2017-01-01')
data = pd.DataFrame({'value' : xrange(len(myidx))}, index = myidx)

data.head()
Out[16]: 
            value
2016-01-01      0
2016-01-02      1
2016-01-03      2
2016-01-04      3
2016-01-05      4
Run Code Online (Sandbox Code Playgroud)

此问题与扩展数据框中的每一行有关

我绝对需要提高直观上非常简单的性能:我需要“放大”数据帧,以便每个索引值“放大”几天(2 天前,2 天后)。

为了完成这项任务,我有以下功能

def expand_onerow(df, ndaysback = 2, nhdaysfwd = 2):
    new_index = pd.date_range(pd.to_datetime(df.index[0]) - pd.Timedelta(days=ndaysback),
                              pd.to_datetime(df.index[0]) + pd.Timedelta(days=nhdaysfwd),
                              freq='D')
    newdf = df.reindex(index=new_index, method='nearest')     #New df with expanded index
    return newdf
Run Code Online (Sandbox Code Playgroud)

现在,使用iterrows或(据说)更快的itertuples结果都会很差。

%timeit pd.concat([expand_onerow(data.loc[[x],:], ndaysback = 2, nhdaysfwd = 2) …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

转发所有变量的所有缺失值

考虑这个简单的数据帧

> data_frame(var1 = c(NA, 1 , NA),
+            var2 = c (NA, 3, NA))
# A tibble: 3 x 2
   var1  var2
  <dbl> <dbl>
1    NA    NA
2     1     3
3    NA    NA
Run Code Online (Sandbox Code Playgroud)

我想填充数据框中所有列的所有缺失值.在我看来,它tidyr::fill()可以做到这一点,但我没有在没有一次指定列的情况下使其工作.

> data_frame(var1 = c(NA, 1 , NA),
+            var2 = c (NA, 3, NA)) %>% tidyr::fill(.direction = 'down')
# A tibble: 3 x 2
   var1  var2
  <dbl> <dbl>
1    NA    NA
2     1     3
3    NA    NA
Run Code Online (Sandbox Code Playgroud)

虽然输入列名称似乎有效

> data_frame(var1 = c(NA, 1 …
Run Code Online (Sandbox Code Playgroud)

r tidyr

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

标签 统计

r ×7

pandas ×3

python ×3

regex ×2

stringr ×2

data.table ×1

dplyr ×1

ggplot2 ×1

latex ×1

purrr ×1

stargazer ×1

tidyeval ×1

tidyr ×1

xtable ×1