使用R

时间:2017-12-07 06:39:12

标签: r data-analysis

我想创建一个接受参数的函数,并将其用于子集,然后用多行绘制图形。我写了以下代码

plot.new( )
rest_o_noise <- function(noise_level, color) {
    rest_o_noise_level = subset(yelp_flat, attributes.RestaurantsPriceRange2!= "NA", eval(parse(text=noise_level)))
    rest_o_noise_level <- rest_o_noise_level %>% 
    group_by(attributes.RestaurantsPriceRange2) %>% 
    summarise(n=mean(stars))
    lines(rest_o_noise_level, stars, col=color)
}



rest_o_noise("attributes.NoiseLevel=='loud'", "green")
rest_o_noise("attributes.NoiseLevel=='low'", "green")

我收到错误:

grouped_df_impl(data,unname(vars),drop)出错:列属性.RestaurantsPriceRange2未知

只是要清楚属性。餐馆价格范围2存在于csv。

最终输出应如下所示:

enter image description here

这是正确的情节方式吗? 请帮忙!!

1 个答案:

答案 0 :(得分:0)

使用字符串中的条件

iris数据中获取行的子集
Species <- as.character(iris$Species)
noise_level <- "Species == \"setosa\""

subset(iris, Sepal.Length == 5.1 & 
       eval(parse(text=noise_level)))

#      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1           5.1         3.5          1.4         0.2  setosa
# 18          5.1         3.5          1.4         0.3  setosa
# 20          5.1         3.8          1.5         0.3  setosa
# 22          5.1         3.7          1.5         0.4  setosa
# 24          5.1         3.3          1.7         0.5  setosa
# 40          5.1         3.4          1.5         0.2  setosa
# 45          5.1         3.8          1.9         0.4  setosa
# 47          5.1         3.8          1.6         0.2  setosa

在你的情况下,它将类似于什么样的条件 列attributes.RestaurantsPriceRange2attributes.NoiseLevel以选择行的子集。

plot.new( )
rest_o_noise <- function(noise_level, color) {
  rest_o_noise_level = subset(yelp_flat, 
   (attributes.RestaurantsPriceRange2!= "NA") &
                              eval(parse(text=noise_level)))
  rest_o_noise_level <- rest_o_noise_level %>% 
    group_by(attributes.RestaurantsPriceRange2) %>% 
    summarise(n=mean(stars))
  lines(rest_o_noise_level, stars, col=color)
}

rest_o_noise("attributes.NoiseLevel==\"loud\"", "green")

您当然可以选择一个列,如下所示。但是,为什么要使用&#34; ==&#34;因此不清楚,因此我假设您正在尝试选择行的子集。

noise_level <- "Petal.Width"
subset(iris, Sepal.Length == 5.1,   
         eval(parse(text=noise_level)))

#      Petal.Width
# 1          0.2
# 18         0.3
# 20         0.3
# 22         0.4
# 24         0.5
# 40         0.2
# 45         0.4
# 47         0.2
# 99         1.1