gpt4 book ai didi

r - 在 R 中提取具有唯一 id 变量的一行

转载 作者:行者123 更新时间:2023-12-04 08:55:09 25 4
gpt4 key购买 nike

我想知道是否有办法用唯一的 sch.id 对每一行中的一行进行子集化在我的 data下面(例如,每个 sch.id 的第一行)?
由于有 160 个唯一 sch.id ,我希望最终输出中有 160 行。

library(tidyverse)

hsb <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/hsb.csv')

data <- hsb %>% group_by(sch.id) %>% mutate(math_ave = mean(math))

最佳答案

如果我们需要所有变量,一个选项是使用 distinctmutate这样它就会保留每个“sch.id”的第一行

library(dplyr)
hsb %>%
group_by(sch.id) %>%
mutate(math_ave = mean(math)) %>%
ungroup %>%
distinct(sch.id, .keep_all = TRUE)
# A tibble: 160 x 9
# sch.id math size sector meanses minority female ses math_ave
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1224 5.88 842 0 -0.428 0 1 -1.53 9.72
# 2 1288 7.86 1855 0 0.128 0 1 -0.788 13.5
# 3 1296 12.7 1719 0 -0.42 1 1 -0.148 7.64
# 4 1308 13.2 716 1 0.534 0 0 0.422 16.3
# 5 1317 12.9 455 1 0.351 0 1 0.882 13.2
# 6 1358 -1.35 1430 0 -0.014 1 0 0.032 11.2
# 7 1374 16.7 2400 0 -0.007 0 0 0.322 9.73
# 8 1433 12.9 899 1 0.718 0 0 0.812 19.7
# 9 1436 24.1 185 1 0.569 0 0 0.222 18.1
#10 1461 13.0 1672 0 0.683 0 1 0.042 16.8
# … with 150 more rows

或者没有 ungroup 的另一种选择ing 将是 slice第一行
hsb %>% 
group_by(sch.id) %>%
mutate(math_ave = mean(math)) %>%
slice(1)

或使用 base Raveduplicated
transform(hsb, math_ave = ave(math, sch.id))[!duplicated(hsb$sch.id),]

关于r - 在 R 中提取具有唯一 id 变量的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63865807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com