第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

dplyr filter:獲取具有最小變量的行,但僅獲取第一個(gè)if多個(gè)最小值

dplyr filter:獲取具有最小變量的行,但僅獲取第一個(gè)if多個(gè)最小值

阿波羅的戰(zhàn)車 2019-08-19 14:57:12
dplyr filter:獲取具有最小變量的行,但僅獲取第一個(gè)if多個(gè)最小值我希望使用一種分組過濾器dplyr,在每個(gè)組中只返回具有最小變量值的行x。我的問題是:正如預(yù)期的那樣,在多個(gè)最小值的情況下,返回具有最小值的所有行。但在我的情況下,如果存在多個(gè)最小值,我只想要第一行。這是一個(gè)例子: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 x           y1 A 1 -1.045843352 A 1  0.979493993 B 2  0.796009714 C 5 -0.086551515 C 5  0.166499626 C 5 -0.05948012使用ddply,我會(huì)以這種方式接近任務(wù):library(plyr)ddply(df, .(A), function(z) {    z[z$x == min(z$x), ][1, ]})......有效:  A x           y1 A 1 -1.045843352 B 2  0.796009713 C 5 -0.08655151問:有沒有辦法在dplyr中解決這個(gè)問題?(出于速度原因)
查看完整描述

3 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊


我希望使用一種分組過濾器dplyr,在每個(gè)組中只返回具有最小變量值的行x。


我的問題是:正如預(yù)期的那樣,在多個(gè)最小值的情況下,返回具有最小值的所有行。但在我的情況下,如果存在多個(gè)最小值,我只想要第一行。


這是一個(gè)例子:


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 x           y

1 A 1 -1.04584335

2 A 1  0.97949399

3 B 2  0.79600971

4 C 5 -0.08655151

5 C 5  0.16649962

6 C 5 -0.05948012

使用ddply,我會(huì)以這種方式接近任務(wù):


library(plyr)

ddply(df, .(A), function(z) {

    z[z$x == min(z$x), ][1, ]

})

......有效:


  A x           y

1 A 1 -1.04584335

2 B 2  0.79600971

3 C 5 -0.08655151

問:有沒有辦法在dplyr中解決這個(gè)問題?(出于速度原因)


查看完整回答
反對(duì) 回復(fù) 2019-08-19
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

只是為了完整性:這是最終dplyr解決方案,源自@hadley和@Arun的評(píng)論:


library(dplyr)

df.g <- group_by(df, A)

filter(df.g, rank(x, ties.method="first")==1)


查看完整回答
反對(duì) 回復(fù) 2019-08-19
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

對(duì)于data.table那些可能感興趣的人來說,這是一個(gè)解決方案:


# approach with setting keys

dt <- as.data.table(df)

setkey(dt, A,x)

dt[J(unique(A)), mult="first"]


# without using keys

dt <- as.data.table(df)

dt[dt[, .I[which.min(x)], by=A]$V1]


查看完整回答
反對(duì) 回復(fù) 2019-08-19
  • 3 回答
  • 0 關(guān)注
  • 759 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)