Questions tagged «dplyr»

使用此标记可以解决与dplyr软件包中的功能有关的问题,例如group_by,摘要,过滤和选择。

1
dplyr可以在多个列或组合键上联接吗?
我意识到dplyrv3.0允许您加入不同的变量: left_join(x, y, by = c("a" = "b")将匹配x.a到y.b 但是,是否可以结合使用变量的组合,还是必须事先添加复合键? 像这样: left_join(x, y, by = c("a c" = "b d")使[ x.a和x.c] 的串联匹配到[ y.b和y.d]
111 r  dplyr 

5
收集多组列
我有一项在线调查的数据,其中受访者会经历1-3次问题循环。调查软件(Qualtrics)记录在多列,也就是说这个数据,Q3.2的调查将在列Q3.2.1.,Q3.2.2.以及Q3.2.3.: df <- data.frame( id = 1:10, time = as.Date('2009-01-01') + 0:9, Q3.2.1. = rnorm(10, 0, 1), Q3.2.2. = rnorm(10, 0, 1), Q3.2.3. = rnorm(10, 0, 1), Q3.3.1. = rnorm(10, 0, 1), Q3.3.2. = rnorm(10, 0, 1), Q3.3.3. = rnorm(10, 0, 1) ) # Sample data id time Q3.2.1. Q3.2.2. …
107 r  reshape  dplyr  qualtrics  tidyr 

6
使用dplyr跨多列求和
我的问题涉及跨数据框的多个列求和,并使用来创建与该求和相对应的新列dplyr。列中的数据条目为binary(0,1)。我正在考虑的summarise_each或mutate_each函数的逐行模拟dplyr。以下是数据框的最小示例: library(dplyr) df=data.frame( x1=c(1,0,0,NA,0,1,1,NA,0,1), x2=c(1,1,NA,1,1,0,NA,NA,0,1), x3=c(0,1,0,1,1,0,NA,NA,0,1), x4=c(1,0,NA,1,0,0,NA,0,0,1), x5=c(1,1,NA,1,1,1,NA,1,0,1)) > df x1 x2 x3 x4 x5 1 1 1 0 1 1 2 0 1 1 0 1 3 0 NA 0 NA NA 4 NA 1 1 1 1 5 0 1 1 0 1 6 1 0 0 0 …
98 r  dplyr 

6
使用dplyr过滤data.frame中的完整案例(逐案删除)
是否可以使用dplyr过滤data.frame以获取完整案例?complete.cases当然,列出所有变量的列表是可行的。但这是a)当有很多变量时冗长; b)当变量名未知时(例如,在处理任何data.frame的函数中),则不可能。 library(dplyr) df = data.frame( x1 = c(1,2,3,NA), x2 = c(1,2,NA,5) ) df %.% filter(complete.cases(x1,x2))
97 r  dplyr  magrittr 

4
dplyr summarise:等效于“ .drop = FALSE”,以在输出中保留长度为零的组
summarise与with plyr的ddply函数一起使用时,默认情况下会删除空类别。您可以通过添加更改此行为.drop = FALSE。但是,当summarise与结合使用时,这是行不通的dplyr。还有另一种方法可以在结果中保留空类别吗? 这是伪造数据的示例。 library(dplyr) df = data.frame(a=rep(1:3,4), b=rep(1:2,6)) # Now add an extra level to df$b that has no corresponding value in df$a df$b = factor(df$b, levels=1:3) # Summarise with plyr, keeping categories with a count of zero plyr::ddply(df, "b", summarise, count_a=length(a), .drop=FALSE) b count_a 1 1 6 …
97 r  dplyr  plyr  tidyr 

6
dplyr:“ n()中的错误:不应直接调用函数”
我试图重现dplyr程序包中的示例之一,但收到此错误消息。我希望看到每个组合出现的频率都会产生一个新的列n。我想念什么?我三重检查该软件包已加载。 library(dplyr) # summarise peels off a single layer of grouping by_vs_am <- group_by(mtcars, vs, am) by_vs <- summarise(by_vs_am, n = n()) n()中的错误:不应直接调用此函数

8
R dplyr:删除多列
我有一个数据框和要删除的该数据框中的列列表。让我们以iris数据集为例。我想删除Sepal.Length并Sepal.Width仅使用剩余的列。如何使用包装select或select_从dplyr包装中取出? 到目前为止,这是我尝试过的方法: drop.cols <- c('Sepal.Length', 'Sepal.Width') iris %>% select(-drop.cols) -drop.cols中的错误:一元运算符的参数无效 iris %>% select_(.dots = -drop.cols) -drop.cols中的错误:一元运算符的参数无效 iris %>% select(!drop.cols) !drop.cols中的错误:参数类型无效 iris %>% select_(.dots = !drop.cols) !drop.cols中的错误:参数类型无效 我觉得我缺少一些明显的东西,因为这些似乎是应该已经存在的非常有用的操作。在Github上,有人发布了类似的问题,哈德利说要使用“负索引”。那是我尝试过的(我认为),但无济于事。有什么建议?
96 r  dplyr 

5
R使用管道运算符时的条件评估%>%
当使用管道操作符%>%与包,如dplyr,ggvis,dycharts,等,我该怎么办了一步条件?例如; step_1 %>% step_2 %>% if(condition) step_3 这些方法似乎不起作用: step_1 %>% step_2 if(condition) %>% step_3 step_1 %>% step_2 %>% if(condition) step_3 有很长的路要走: if(condition) { step_1 %>% step_2 }else{ step_1 %>% step_2 %>% step_3 } 有没有所有冗余的更好方法吗?
93 r  dplyr  ggvis  magrittr 

6
按组获取最高值
这是一个示例数据框: d <- data.frame( x = runif(90), grp = gl(3, 30) ) 我想要d包含的行的子集,每个行的的前5个值都x为grp。 使用base-R,我的方法将类似于: ordered <- d[order(d$x, decreasing = TRUE), ] splits <- split(ordered, ordered$grp) heads <- lapply(splits, head) do.call(rbind, heads) ## x grp ## 1.19 0.8879631 1 ## 1.4 0.8844818 1 ## 1.12 0.8596197 1 ## 1.26 0.8481809 1 …
92 r  data.table  dplyr 

4
dplyr在data.table上,我真的在使用data.table吗?
如果我使用dplyr语法上的顶部数据表中,同时仍然使用dplyr的语法我能得到的所有数据表的速度益处?换句话说,如果我使用dplyr语法查询数据表,是否会滥用数据表?还是我需要使用纯数据表语法来发挥其全部功能。 在此先感谢您的任何建议。代码示例: library(data.table) library(dplyr) diamondsDT <- data.table(ggplot2::diamonds) setkey(diamondsDT, cut) diamondsDT %>% filter(cut != "Fair") %>% group_by(cut) %>% summarize(AvgPrice = mean(price), MedianPrice = as.numeric(median(price)), Count = n()) %>% arrange(desc(Count)) 结果: # cut AvgPrice MedianPrice Count # 1 Ideal 3457.542 1810.0 21551 # 2 Premium 4584.258 3185.0 13791 # 3 Very Good …
91 r  data.table  dplyr 

2
加入dplyr时如何指定x和y的列名?
我有两个要使用dplyr加入的数据框。一个是包含名字的数据帧。 test_data <- data.frame(first_name = c("john", "bill", "madison", "abby", "zzz"), stringsAsFactors = FALSE) 另一个数据框包含Kantrowitz名称语料库的清理版本,用于标识性别。这是一个最小的示例: kantrowitz <- structure(list(name = c("john", "bill", "madison", "abby", "thomas"), gender = c("M", "either", "M", "either", "M")), .Names = c("name", "gender"), row.names = c(NA, 5L), class = c("tbl_df", "tbl", "data.frame")) 我本质上是想test_data使用kantrowitz表从表中查找名称的性别。因为我要将其抽象为一个函数encode_gender,所以我不知道将要使用的数据集中的列的名称,因此,我不能保证它会name像那样被使用kantrowitz$name。 在基本RI中,将以这种方式执行合并: merge(test_data, kantrowitz, by.x = "first_names", …
89 r  join  left-join  dplyr 

3
带条件值的dplyr变异
在具有四列的大型数据帧(“ myfile”)中,我必须添加第五列,其值有条件地基于前四列。 首选使用dplyr和的答案mutate,主要是因为它在大型数据集中的速度很高。 我的数据框如下所示: V1 V2 V3 V4 1 1 2 3 5 2 2 4 4 1 3 1 4 1 1 4 4 5 1 3 5 5 5 5 4 ... 第五列(V5)的值基于一些条件规则: if (V1==1 & V2!=4) { V5 <- 1 } else if (V2==4 & V3!=1) { …
87 r  dplyr  mutate 

12
dplyr更改/替换行子集上的几列
我正在尝试一个基于dplyr的工作流(而不是主要使用data.table,我曾经使用过),但是遇到了一个问题,我找不到与之等效的dplyr解决方案。我通常遇到需要根据一个条件有条件地更新/替换几列的情况。这是一些示例代码,以及我的data.table解决方案: library(data.table) # Create some sample data set.seed(1) dt <- data.table(site = sample(1:6, 50, replace=T), space = sample(1:4, 50, replace=T), measure = sample(c('cfl', 'led', 'linear', 'exit'), 50, replace=T), qty = round(runif(50) * 30), qty.exit = 0, delta.watts = sample(10.5:100.5, 50, replace=T), cf = runif(50)) # Replace the values of several …
85 r  data.table  dplyr 

4
使用dplyr按组计算行数
我正在使用mtcars数据集。我想查找特定数据组合的记录数。与count(*)SQL中的group by子句非常相似。ddply()来自plyr为我工作 library(plyr) ddply(mtcars, .(cyl,gear),nrow) 有输出 cyl gear V1 1 4 3 1 2 4 4 8 3 4 5 2 4 6 3 2 5 6 4 4 6 6 5 1 7 8 3 12 8 8 5 2 使用此代码 library(dplyr) g <- group_by(mtcars, cyl, gear) summarise(g, length(gear)) …
81 r  dplyr  count  plyr 

4
根据字符串匹配选择列-dplyr :: select
我有一个包含很多列的数据框(“数据”)。一些列包含某个字符串(“ search_string”)。 如何使用dplyr::select()给我一个仅包含包含字符串的列的子集? 我试过了: # columns as boolean vector select(data, grepl("search_string",colnames(data))) # columns as vector of column names names select(data, colnames(data)[grepl("search_string",colnames(data))]) 他们都不工作。 我知道可以select()接受数值向量替代列,例如: select(data,5,7,9:20) 但是我不知道如何ID从grepl()表达式中获取列s的数值向量。
80 r  regex  dplyr 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.