Я пытаюсь найти элегантное решение проблемы без сложного подмножества и/или линейной итерации. Я объясню, например:Совокупные условные операторы
# Load data
df1 <- mtcars
# Can aggregate with simple math functions i.e. mean or sum
hp_by_cyl <- aggregate(hp ~ cyl, data=df1, mean)
> hp_by_cyl
cyl hp
1 4 82.63636
2 6 122.28571
3 8 209.21429
Ok. Но в моих действительно более сложных данных я хочу объединить логическое значение - т. Е. Если x истинно для любой строки, принадлежащей категории A, тогда y = 1. Таким образом, чтобы продлить мой пример, я могу создать столбец с логическими переменным:
df1$logic <- ifelse(df1$gear==4 & df1$hp < 150, 1, 0)
# How do I aggregate the logical values levels of cyl to answer yes/no
# if any car with x cylinders has 4 gears and < 150 hp ?
# So I want an finished table like this:
cyl logic
4 1
6 1
8 0
Так что мой вопрос в том, как использовать агрегат (или заменяющий) команду для создания таблицы, как это? т. Е. Чтобы объединить логический статус, а не числовое значение?
мне также нужно иметь дело с закодированными недостающих значений и в действительности так, чтобы эмулировать, что сложность Сделаю одно из логики-х 99:
df1[5, ]$logic <- 99
Если для данного уровня cyl
один значение равно 1, 99 можно пренебречь - если, однако, все остальные равны 0, то агрегат должен быть равен 99.
Извинения, если есть простой ответ, который я не вижу в своих реальных данных, кажется сложным. Я мог взломать неприятное решение, но я знаю, что он будет очень медленным, и у меня есть набор данных размера 14000 X 140. Спасибо заранее все.
В чем проблема? – Carl
Я понятия не имею, как закодировать его для создания сводной таблицы, которую я хочу. Отредактировано для clariaty – user2498193