【问题标题】:function to retrieve data from one column based on data from another column in R用于根据 R 中另一列的数据从一列中检索数据的函数
【发布时间】:2015-10-24 05:23:04
【问题描述】:

我有一个农贸市场数据集,其中一列是“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"                                                            

【问题讨论】:

    标签: r function for-loop output


    【解决方案1】:

    我认为这里不需要for 循环。尝试对 WIC 列进行子集化。如果您只需要MarketName 列,那么

    data3[data3$WIC == "Y", ]$MarketName
    
    [1] "Union Springs Famers Market" "Unity Market Day Farmers"    "University Farmers Market"  
    

    【讨论】:

    • 你也不能用 $ 索引函数中的列名。您的函数采用了一个数据框并尝试通过 data$WIC 选择一列 (WIC),但这是行不通的。试试 data[,"WIC"] 那种东西....但是,是的,只需像 Ronak 所说的那样使用子集操作。
    • @Chris:你确定这是真的吗?使用mydf$WIC 会更有意义,但是如果在函数之前定义data,我认为他的版本应该仍然有效?不过绝对不推荐!
    • 我不能做一个子集,因为真实数据集有 45 列,我只想返回接受 WIC 的市场名称(一列)。
    • @S.Galleg 检查更新的答案。如果那是你想要的。
    • 哦,哎呀,我没有看到函数定义之前定义的 mydf3...这是一个没有实际参数的函数(mydf 没有出现在正文中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2019-03-17
    • 2016-02-14
    • 2020-11-05
    • 2021-11-24
    • 2018-01-18
    • 2015-02-28
    相关资源
    最近更新 更多