小编Sot*_*tos的帖子

每组可视化每天的摘要统计信息

假设以下数据框,

head(df, 9)
         Day               variable     value
1 2015-10-18   Number_Flows.minimum  401.0000
2 2015-10-18   Number_Flows.maximum 2068.0000
3 2015-10-18   Number_Flows.average 1578.9474
4 2015-10-18 Number_srcaddr.minimum   95.0000
5 2015-10-18 Number_srcaddr.maximum  292.0000
6 2015-10-18 Number_srcaddr.average  222.6316
7 2015-10-18 Number_dstaddr.minimum   65.0000
8 2015-10-18 Number_dstaddr.maximum  411.0000
9 2015-10-18 Number_dstaddr.average  202.5789
Run Code Online (Sandbox Code Playgroud)

我想要做的就是情节minimum,maximum,average每个Number_Flows,Number_srcaddr等我宁愿有条显示的价值,但我打开其他的方法为好,只要我得到(例如,对于贴在下面重复的例子)共22张图表(每天11张).

我尝试了各种各样的东西但没有运气

library(dplyr)
library(ggplot2)


ggplot(df %>% mutate(group = paste(Day, gsub('\\..*', '', variable), sep = '-')), aes(x = Day, y = value))+geom_bar(stat = 'identity')+facet_wrap(~group)
ggplot(df %>% mutate(group = paste(Day, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
2
解决办法
305
查看次数

Dummify字符列并查找唯一值

我有一个具有以下结构的数据帧

test <- data.frame(col = c('a; ff; cc; rr;', 'rr; a; cc; e;'))
Run Code Online (Sandbox Code Playgroud)

现在我想从中创建一个数据帧,其中包含测试数据帧中每个唯一值的命名列.唯一值是以';'结尾的值 角色,从空间开始,不包括空间.然后,对于列中的每一行,我希望用1或0填充虚拟列.如下所示

data.frame(a = c(1,1), ff = c(1,0), cc = c(1,1), rr = c(1,0), e = c(0,1))

  a ff cc rr e
1 1  1  1  1 0
2 1  0  1  1 1
Run Code Online (Sandbox Code Playgroud)

我尝试使用for循环和列中的唯一值创建一个df,但它变得很乱.我有一个可用的向量,包含列的唯一值.问题是如何创建1和0.我尝试了一些mutate_all()功能,grep()但这没用.

r dummy-variable

4
推荐指数
2
解决办法
1316
查看次数

将向量的每个元素添加到另一个向量

我有2个向量

x <- c(2,2,5)
y <- c(1,2)
Run Code Online (Sandbox Code Playgroud)

我想将向量的每个元素组合在一起得到

[1] 3 3 6 4 4 7
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

r vector add

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

将一列转换为多列

我是新手.我有一个包含一列和多行的数据集.我想将此列转换为5列.例如,我的数据集如下所示:

Column
----
City
Nation
Area
Metro Area
Urban Area
Shanghai
China
24,000,000
1230040
4244234
New york 
America 
343423  
23423434    
343434
Etc
Run Code Online (Sandbox Code Playgroud)

输出应该如下所示

City | Nation | Area | Metro City | Urban Area
----- -------  ------ ------------ -----------
Shangai China  2400000  1230040     4244234
New york America 343423  23423434    343434
Run Code Online (Sandbox Code Playgroud)

数据集的前5行(City,Nation,Area等)需要是5列的名称,我希望在这5列下填充其余数据.请帮忙.

r

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

在dplyr链中携带价值

假设我有以下专栏

**CurrentStatus**
Current
NoChange
NoChange
NoChange
NoChange
Late
Run Code Online (Sandbox Code Playgroud)

我想改变它,以便如果值为"NoChange",则使用先前值.

我试过了:

myDF %>% mutate(CurrentStatus = ifelse(CurrentStatus == "NoChange", lag(CurrentStatus), CurrentStatus)
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用 - 我认为这是因为它进行了矢量化计算,因此它同时查看所有滞后.我需要它"向前滚动".我想知道在没有for循环的情况下,最有效的方法是什么.我特别想避免使用for循环,因为有些分组变量没有显示我需要注意.

谢谢!

r dplyr

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

平均越来越多的数据帧列

我有一个包含7列的数据框(wc2):

    cm5      cm10      cm15      cm20      cm25      cm30       run_time
1 0.1221060 0.1221060 0.1221060 0.1221060 0.1221060 0.1221060        0
2 0.4084525 0.4028010 0.3617393 0.2595060 0.1294412 0.1220099        2
3 0.4087809 0.4042515 0.3711077 0.3119956 0.2241836 0.1290348        4
4 0.4088547 0.4045780 0.3732053 0.3218224 0.2611785 0.1720426        6
5 0.4088770 0.4046887 0.3739936 0.3255557 0.2739738 0.2081264        8
6 0.4088953 0.4047649 0.3744183 0.3273794 0.2798225 0.2273250       10
Run Code Online (Sandbox Code Playgroud)

对于每一行(run_time),我想首先平均第一列,然后是第一列和第二列,然后是第一列,第二列和第三列,依此类推,直到第6列.平均结果应该在新列或新数据框中(我不介意).我使用以下代码完成了它:

wc2$dia10 <- wc2$cm5
wc2$dia20 <- rowMeans(wc2[c("cm5", "cm10")])
wc2$dia30 <- rowMeans(wc2[c("cm5", "cm10", "cm15")])
wc2$dia40 <- rowMeans(wc2[c("cm5", "cm10", "cm15", "cm20")])
wc2$dia50 <- rowMeans(wc2[c("cm5", "cm10", "cm15", …
Run Code Online (Sandbox Code Playgroud)

r

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

如何删除具有特殊字符的行?

我想从我的数据框中删除包含左括号"("的行.

我尝试了以下方法:

df[!grepl("(", df$Name),] 
Run Code Online (Sandbox Code Playgroud)

但这并没有追查(标志

regex r dataframe grepl

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

如何group_by(everything())

我想使用数据框计算唯一的组合 dplyr

我尝试了以下方法:

require(dplyr)

set.seed(314)
dat <- data.frame(a = sample(1:3, 100, replace = T),
                  b = sample(1:2, 100, replace = T),
                  c = sample(1:2, 100, replace = T))

dat %>% group_by(a,b,c) %>% summarise(n = n())
Run Code Online (Sandbox Code Playgroud)

但为了使这个通用(与列的名称无关),我试过:

dat %>% group_by(everything()) %>% summarise(n = n())
Run Code Online (Sandbox Code Playgroud)

结果如下:

    a     b     c     n
<int> <int> <int> <int>
1      1     1     1     6
2      1     1     2     8
3      1     2     1    13
4      1     2     2     8
5      2     1     1     7
6      2     1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

如何使用不同的连接器粘贴列

例如,

df<-data.frame(chr=c(3,4,5),
 start=c(11,12,13),
 end=c(21,22,23))
df
  chr start end
1   3    11  21
2   4    12  22
3   5    13  23
Run Code Online (Sandbox Code Playgroud)

我的问题是使用“:”和“-”粘贴三列,以便所需的输出为df$anno

df
  chr start end    anno
1   3    11  21 3:11-21
2   4    12  22 4:12-22
3   5    13  23 5:13-23
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
2
解决办法
84
查看次数

如果通过 dplyr 和 stringr 进行字符串,有没有办法将一组字符串替换为另一组字符串

我重现了我的问题的简单版本。我本质上想将所有语句的语句列中的英语单词替换为西班牙语等效单词。

library(tidyverse)
english <- c('hello','world','my','name', 'is')
spanish <- c('hola','mundo','mi','nombre', 'es')
statement <-c('Hello my name is john doe',' hello world','my name is world','hello john, my world is','jane is my world ')

df <- data.frame(english,spanish,statement)  
df
Run Code Online (Sandbox Code Playgroud)

我试过

df %>% 
  str_replace_all(statement, c(df$english), c(df$spanish))
Run Code Online (Sandbox Code Playgroud)

str_replace_all(statement, c(df$english), c(df$spanish)).
Run Code Online (Sandbox Code Playgroud)

第二次尝试让我更接近我的答案。仅替换了一个答案。

r stringr dplyr tidyverse

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

标签 统计

r ×10

dplyr ×3

add ×1

dataframe ×1

dummy-variable ×1

ggplot2 ×1

grepl ×1

regex ×1

stringr ×1

tidyverse ×1

vector ×1