函数根据 R 中另一列的数据从一列检索数据
function to retrieve data from one column based on data from another column in R
我有一个农贸市场数据集,其中一列是 "MarketName"(第 2 列),另一列是 "WIC"(第 21 列)。如果 WIC 列 = Y,我编写了一个函数来检索市场名称。我的输出应该是 2,207 个名称的列表,但是我得到 8,144 行的输出,因为对于 WIC 列 = N 的行,我的输出显示 NA .有 45 列和 8,144 行,但这是一个只有两列的假数据集
MarketName <- c("Union Springs Famers Market","Union Square Farmers Market", "Union Square Greenmarket", "Union Street Farmers Market", "Unity Market Day Farmers", "University Farmers Market")
WIC <- c("Y","N","N","N","Y","Y")
data3 <- data.frame(MarketName, WIC)
data3$MarketName <- as.character(data3$MarketName)
data3$WIC <- as.character(data3$WIC)
这是我的功能(这可能是问题所在?)
marketacceptWIC <- function(mydf)
{
market <- 0
for(i in 1:length(data3$WIC))
{
if(data3[i,2] == "Y")
market[i] <- data3[i,1]
}
return(market)
}
这是我得到的输出示例
[1] "Union Springs Famers Market" NA NA NA
[5] "Unity Market Day Farmers" "University Farmers Market"
我要的只是接受WIC的农贸市场列表
[1] "Union Springs Farmers' Market"
[2] "Unity Market Day Farmers"
[3] "University Farmers Market"
我认为这里不需要 for
循环。尝试在 WIC 列上进行子集化。如果您只需要 MarketName
列,则
data3[data3$WIC == "Y", ]$MarketName
[1] "Union Springs Famers Market" "Unity Market Day Farmers" "University Farmers Market"
我有一个农贸市场数据集,其中一列是 "MarketName"(第 2 列),另一列是 "WIC"(第 21 列)。如果 WIC 列 = Y,我编写了一个函数来检索市场名称。我的输出应该是 2,207 个名称的列表,但是我得到 8,144 行的输出,因为对于 WIC 列 = N 的行,我的输出显示 NA .有 45 列和 8,144 行,但这是一个只有两列的假数据集
MarketName <- c("Union Springs Famers Market","Union Square Farmers Market", "Union Square Greenmarket", "Union Street Farmers Market", "Unity Market Day Farmers", "University Farmers Market")
WIC <- c("Y","N","N","N","Y","Y")
data3 <- data.frame(MarketName, WIC)
data3$MarketName <- as.character(data3$MarketName)
data3$WIC <- as.character(data3$WIC)
这是我的功能(这可能是问题所在?)
marketacceptWIC <- function(mydf)
{
market <- 0
for(i in 1:length(data3$WIC))
{
if(data3[i,2] == "Y")
market[i] <- data3[i,1]
}
return(market)
}
这是我得到的输出示例
[1] "Union Springs Famers Market" NA NA NA
[5] "Unity Market Day Farmers" "University Farmers Market"
我要的只是接受WIC的农贸市场列表
[1] "Union Springs Farmers' Market"
[2] "Unity Market Day Farmers"
[3] "University Farmers Market"
我认为这里不需要 for
循环。尝试在 WIC 列上进行子集化。如果您只需要 MarketName
列,则
data3[data3$WIC == "Y", ]$MarketName
[1] "Union Springs Famers Market" "Unity Market Day Farmers" "University Farmers Market"