У меня есть 4 колонки: Идентификатор автомобиля, Класс автомобиля, Длина транспортного средства и Ширина транспортного средства. Каждое транспортное средство имеет уникальный идентификатор транспортного средства (например, 2, 4, 5, ...), и данные собирались каждые 0,1 секунды, что означает, что идентификаторы транспортных средств повторяются в колонке Идентификатор транспортного средства за количество раз, которое они наблюдали. Существует три класса транспортных средств, то есть 1 = мотоциклы, 2 = автомобили, 3 = грузовые автомобили в колонке класса транспортного средства, а длины и ширина указаны в соответствующих колонках по каждому идентификатору транспортного средства. Я хочу подмножить данные по классу автомобиля, а затем найти пропорции каждой модели автомобиля (уникальная длина и ширина) в каждом классе. Например, для автомобиля класса = 2, т. Е. Автомобиля, я хочу найти разные модели автомобилей (уникальная длина и ширина) и их пропорции относительно общего количества автомобилей. Вот то, что я сделал до сих пор:Как получить пропорции данных по двум переменным в R?
Для подмножества данных с помощью класса Vehicle
cars <- subset(b, b$'Vehicle class'==2)
trucks <- subset(b, b$'Vehicle class'==3)
motorcycles <- subset(b, b$'Vehicle class'==1)
Чтобы найти количество машин
numofcars <- length(unique(cars$'Vehicle ID')) # 2830
numoftrucks <- length(unique(trucks$'Vehicle ID')) # 137
numofmotorcycles <- length(unique(motorcycles$'Vehicle ID'))# 45
выше код работал, но я не мог найти пропорции используя приведенный ниже код:
by (cars, INDICES=cars$'Vehicle Length', FUN=table(cars$'Vehicle width'))
R дает сообщение, согласно которому он не может найти «FUN». Пожалуйста, помогите мне найти пропорции каждой модели во всех классах транспортных средств.
EDIT (Пример ввода)
Vehicle ID Vehicle Class Vehicle Length Vehicle Width
2 2 13.5 4.5
2 2 13.5 4.5
2 2 13.5 4.5
2 2 13.5 4.5
3 2 13.5 4.0
3 2 13.5 4.0
3 2 13.5 4.0
3 2 13.5 4.0
4 2 10.0 4.5
4 2 10.0 4.5
4 2 10.0 4.5
4 2 10.0 4.5
5 3 23.0 4.5
5 3 23.0 4.5
5 3 23.0 4.5
5 3 23.0 4.5
6 3 76.5 4.5
6 3 76.5 4.5
6 3 76.5 4.5
6 3 76.5 4.5
6 3 76.5 4.5
7 1 10.0 3.0
7 1 10.0 3.0
7 1 10.0 3.0
7 1 10.0 3.0
8 2 13.5 5.5
8 2 13.5 5.5
8 2 13.5 5.5
8 2 13.5 5.5
Обратите внимание, что в этом входе: Общее количество автомобилей = 4, грузовики = 2, мотоциклы = 1
Пример вывода
Group: cars
VehicleLength VehicleWidth Proportion
13.5 4.5 0.25
13.5 4.0 0.25
13.5 5.5 0.25
23.0 4.5 0.25
Group:trucks
VehicleLength VehicleWidth Proportion
23.0 4.5 0.5
76.0 4.5 0.5
Group: motorcycles
VehicleLength VehicleWidth Proportion
10.0 3.0 1.0
Я добавил образец ввода и вывода –
Это решение работает тогда. Вместо трех таблиц он возвращает одну таблицу с «Vehicleclass» в качестве одного из столбцов. Вы можете подмножество на 'dt2', как вы показали в своем вопросе, чтобы получить три отдельных набора данных, если хотите, хотя я не понимаю, почему это не может быть только одним набором данных. – TheComeOnMan
Спасибо за ваше решение, оно работает. Единственная проблема заключается в том, что он не дает правильного «ClassLengthWidthFreq». Он сообщает, что частота намного выше, чем ожидалось, например. первое значение, которое он представляет, составляет 18677 (при применении к исходным данным). Возможно, это связано с тем, что он подсчитывает повторения одного и того же транспортного средства и когда он должен считать его только один раз. –