Tag: dplyr

dplyr filter:获取具有最小variables的行,但只有第一个如果多个最小值

我想用dplyr做一个分组filter,在每个组中只有那个返回variablesx的最小值的行。 我的问题是:正如所料,在多重最小值的情况下返回所有具有最小值的行。 但就我而言,如果存在多个最小值, 我只想要第一行 。 这是一个例子: df <- data.frame( A=c("A", "A", "A", "B", "B", "B", "C", "C", "C"), x=c(1, 1, 2, 2, 3, 4, 5, 5, 5), y=rnorm(9) ) library(dplyr) df.g <- group_by(df, A) filter(df.g, x == min(x)) 正如预期的那样,所有的最小值都会返回 Source: local data frame [6 x 3] Groups: A A xy 1 A 1 -1.04584335 2 […]

dplyr summarise_each与na.rm

有没有办法指示dplyr与na.rm=TRUE使用na.rm=TRUE ? 我想用summarise_each("mean")来表示variables的意思,但是我不知道如何指定它来忽略缺less的值。

dplyr可以join多个列或组合键吗?

我意识到dplyr v3.0允许你join不同的variables: left_join(x, y, by = c("a" = "b")将匹配xa到yb 但是,是否有可能joinvariables的组合? 或者我必须提前添加一个复合键? 这就像是: left_join(x, y, by = c("ac" = "bd")以匹配[ xa和xc ]到[ yb和yd ]的级联

如何在joindplyr时为x和y指定列的名称?

我有两个dataframe,我想要使用dplyrjoin。 一个是包含名字的数据框。 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")) 我基本上想使用kantrowitz表从test_data表中查找名字的性别。 因为我要把它抽象成一个函数encode_gender ,所以我不会知道将要使用的数据集中的列的名称,所以我不能保证它是name ,就像在kantrowitz$name 。 在基地RI会执行合并这种方式: merge(test_data, kantrowitz, by.x = […]

dplyr data.table,我真的使用data.table吗?

如果我在数据表顶部使用dplyr语法,是否仍然使用dplyr的语法获得数据表的所有速度优势? 换句话说,如果我用dplyr语法来查询数据表,是否会误用数据表? 还是我需要使用纯数据表语法来利用其所有的权力。 预先感谢您的任何build议。 代码示例: 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 3981.760 2648.0 […]

从分组数据中select第一行和最后一行

题 使用dplyr ,如何在一个语句中select分组数据的顶部和底部观察/行? 数据和示例 给定一个数据框 df <- data.frame(id=c(1,1,1,2,2,2,3,3,3), stopId=c("a","b","c","a","b","c","a","b","c"), stopSequence=c(1,2,3,3,1,4,3,1,2)) 我可以使用slice得到每个组的顶部和底部观察值,但是使用两个单独的expression式: firstStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(1) %>% ungroup lastStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(n()) %>% ungroup 我可以将这两个statmenets结合成一个select顶部和底部观察?

修复多个警告“未知列”

对于所有types的命令(例如,str(x)在软件包上安装更新),我都有一个“未知列”的持久多重警告,并且不知道如何debugging或修复它。 警告“unknown column”显然与我重命名的tbl_df中的一个variables相关,但警告出现在与tbl_df看似无关的所有命令中(例如,在包上安装更新,str(x),其中x是只是一个字符vector)。

使用dplyr过滤包含特定string的行

我必须使用包含stringRTB行作为标准来过滤dataframe。 我正在使用dplyr 。 d.del <- df %.% group_by(TrackingPixel) %.% summarise(MonthDelivery = as.integer(sum(Revenue))) %.% arrange(desc(MonthDelivery)) 我知道我可以在dplyr使用函数filter ,但我不知道如何告诉它检查string的内容。 特别是我想检查TrackingPixel列中的内容。 如果string包含标签RTB我想从结果中删除该行。

使用dplyr删除重复的行

我有这样的data.frame – set.seed(123) df = data.frame(x=sample(0:1,10,replace=T),y=sample(0:1,10,replace=T),z=1:10) > df xyz 1 0 1 1 2 1 0 2 3 0 1 3 4 1 1 4 5 1 0 5 6 0 1 6 7 1 0 7 8 1 0 8 9 1 0 9 10 0 1 10 我想根据前两列删除重复的行。 预期产出 – df[!duplicated(df[,1:2]),] xyz 1 […]

提取一个dplyr tbl列作为一个向量

有一个更简洁的方法,从数据库后端的tbl(即数据框/表不能直接子集)获得一列dplyr tbl作为一个向量吗? require(dplyr) db <- src_sqlite(tempfile(), create = TRUE) iris2 <- copy_to(db, iris) iris2$Species # NULL 那太容易了,所以 collect(select(iris2, Species))[, 1] # [1] "setosa" "setosa" "setosa" "setosa" etc. 但似乎有点笨拙。