gpt4 book ai didi

R编程使用 "dplyr"选择行并返回找到的行的索引

转载 作者:行者123 更新时间:2023-12-03 23:40:52 25 4
gpt4 key购买 nike

设置/问题:

使用 dplyr - 我无法确定返回过滤行的行索引的最佳方式,而不是返回过滤行的内容。

问题:

我可以使用 dplyr::filter() 从数据框中提取行...问题是要提取过滤行的索引值并将其添加到符合搜索条件的索引条目列表中。

问题:

有没有一种简单的方法可以使用 dplyr 针对特定条件搜索数据框并返回找到的每一行的数字索引?下面的代码使用 r::which() 将索引行提取到列表中......

    requiredPackages <- c("dplyr")

ipak <- function(pkg){
new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
if (length(new.pkg))
install.packages(new.pkg, dependencies = TRUE)
sapply(pkg, require, character.only = TRUE)
}

ipak(requiredPackages)

if (!file.exists("./week3/data")) {
dir.create("./week3/data")
}

# CSV Download
if (!file.exists("./week3/data/americancommunitySurvey.csv")) {
fileUrl <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Fss06hid.csv?accessType=DOWNLOAD"
download.file(fileUrl, destfile = "./week3/data/americancommunitySurvey.csv", method = "curl")
}

housingData <- tbl_df(read.csv("./week3/data/americancommunitySurvey.csv"
, stringsAsFactors = TRUE))

Now we have to extract the relevant data
#
# Create a logical vector that identifies the households on greater than 10
# acres who sold more than $10,000 worth of agriculture products. Assign that
# logical vector to the variable agricultureLogical. Apply the which() function
# like this to identify the rows of the data frame where the logical vector is
# TRUE. which(agricultureLogical) What are the first 3 values that result?
#
# ACR 1
# Lot size
# b .N/A (GQ/not a one-family house or mobile home)
# 1 .House on less than one acre
# 2 .House on one to less than ten acres
# 3 .House on ten or more acres ACR == 3
#
# AGS 1
# Sales of Agriculture Products
# b .N/A (less than 1 acre/GQ/vacant/
# .2 or more units in structure)
# 1 .None
# 2 .$ 1 - $ 999
# 3 .$ 1000 - $ 2499
# 4 .$ 2500 - $ 4999
# 5 .$ 5000 - $ 9999
# 6 .$10000+ AGS == 6
#
# Thus, we need to select only the results that have a ACR == 3 AND a AGS == 6
#
agricultureLogical <- which(housingData$ACR == 3 & housingData$AGS == 6)
agricultureLogical
# Now we can display the first three values of the resulting list
head(agricultureLogical[1:3])

上面的代码给了我想要的结果,但我想了解如何用 dplyr 做到这一点。它困扰着我......我可以使用 dplyr::filter() 如下提取行 - 我如何提取找到的每一行的索引????
agricultureLogical <- filter(housingData, ACR == 3 & housingData$AGS == 6)

R 设置

版本
_
平台 x86_64-apple-darwin13.4.0
拱 x86_64
操作系统 darwin13.4.0
系统 x86_64,darwin13.4.0
地位
专业 3
未成年人 1.2
2014 年
第 10 个月
第 31 天
svn 版本 66913
语言 R
version.string R 版本 3.1.2 (2014-10-31)
昵称南瓜 Helm

dplyr 版本 0.3.0.2

设置 Mac OS X

型号名称:MacBook Pro
型号标识符:MacBookPro10,1
处理器名称:英特尔酷睿 i7
处理器速度:2.7 GHz
处理器数量:1
核心总数:4
L2 缓存(每核):256 KB
三级缓存:8 MB
内存:16 GB

最佳答案

更简单的解决方案是使用 with缠绕which :
agricultureLogical <- housingData %>% with(which(ACR == 3 & AGS == 6))

关于R编程使用 "dplyr"选择行并返回找到的行的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28004872/

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