Использование барплота в R studio - PullRequest
0 голосов
/ 09 января 2020

, когда я пытаюсь использовать этот код для барплота (L$neighbourhood - это район квартиры в Париже, например, Елисейские поля, Батиньоль, который является строковыми данными, а L$price - это цифры c для цены квартиры ).

 barplot(L$neighbourhood, L$price, main = "TITLE", xlab = "Neighbourhood", ylab = "Price")

Но я получаю сообщение об ошибке:

Ошибка в barplot.default (L $ окрестность, L $ цена, main = "TITLE", xlab = "Соседство" ,: 'height' должно быть вектором или матрицей

Мы не можем использовать строковые данные в качестве входных данных для функции barplot в R? Как я могу исправить эту ошибку, пожалуйста?

dataframe

price

barplotresult

все окрестности

1 Ответ

1 голос
/ 09 января 2020

Совершенно неясно, что вы хотите, чтобы барплот. Предположим, вы хотите увидеть среднюю цену за район. Если это то, что вам нужно, вы можете действовать следующим образом.

Сначала приведем несколько иллюстративных данных:

set.seed(123)
Neighborhood <- sample(LETTERS[1:4], 10, replace = T)
Price <- sample(10:100, 10, replace = T)
df <- data.frame(Neighborhood, Price)
df
   Neighborhood Price
1             C    23
2             C    34
3             C    99
4             B   100
5             C    78
6             B   100
7             B    66
8             B    18
9             C    81
10            A    35

Теперь вычислите средние значения по окрестностям, используя функцию aggregate, и сохраните результат в новый фрейм данных:

df_new <- aggregate(x = df$Price, by = list(df$Neighborhood), function(x) mean(x))
df_new
  Group.1  x
1       A 35
2       B 71
3       C 63

И, наконец, вы можете построить средние цены в переменной x и добавить названия окрестностей из столбца Group.1:

barplot(df_new$x, names.arg = df_new$Group.1)

Еще проще Решение это, используя tapply и mean:

df_new <- tapply(df$Price, df$Neighborhood, mean)
barplot(df_new, names.arg = names(df_new))
...