2015-08-02 3 views
2

У меня есть два набора данных. Один из оригиналов назывался geoIncendios, а второй - outliers. Как вы можете себе представить, это подмножество, состоящее из выбросов первого. Проанализировав их, я обнаружил ошибку и исправил их. Поэтому теперь я хотел бы заменить строки первого набора данных вторым.Как заменить некоторые строки набора данных из другого набора данных в R

Вот структура обоих наборов данных, чтобы дать вам идею:

> str(geoIncendios) 
'data.frame': 100 obs. of 9 variables: 
$ id   : num 1 2 3 4 5 6 7 8 9 10 ... 
$ municipio : chr "LLANES" "CANIZA" "CANGAS DEL NARCEA" "PILONA" ... 
$ num_incendios: num 1725 1521 1349 1341 1290 ... 
$ ha_quemadas : num 79 70 34 81 96 56 4 87 18 69 ... 
$ ranking  : num 1 2 3 4 5 6 7 8 9 10 ... 
$ comunidad : chr "ASTURIAS" "GALICIA" "ASTURIAS" "ASTURIAS" ... 
$ provincia : chr "ASTURIAS" "PONTEVEDRA" "ASTURIAS" "ASTURIAS" ... 
$ lon   : num -4.76 -8.27 -6.55 -5.35 -7.11 ... 
$ lat   : num 43.4 42.2 43.2 43.3 42.2 ... 

> str(outliers) 
'data.frame': 11 obs. of 9 variables: 
$ id   : num 9 13 22 24 37 40 43 45 68 93 ... 
$ municipio : chr "NEVES" "LENA" "TOMINO" "GRADO" ... 
$ num_incendios: num 1081 929 818 744 641 ... 
$ ha_quemadas : num 18 74 73 49 61 48 38 21 46 8 ... 
$ ranking  : num 9 13 22 24 37 40 43 45 68 93 ... 
$ comunidad : chr "GALICIA" "ASTURIAS" "GALICIA" "ASTURIAS" ... 
$ provincia : chr "PONTEVEDRA" "ASTURIAS" "PONTEVEDRA" "ASTURIAS" ... 
$ lon   : num -8.41 -5.84 -8.73 -6.07 -8.31 ... 
$ lat   : num 42.1 43.1 42 43.4 42.1 ... 

Так снова Я хотел бы, чтобы перезаписать 11 строк в наборе данных geoIncendios с теми из outliers данных. Я считаю, что мне нужно использовать какой-то цикл. Но в случае, если есть самое простое решение (в котором я сомневаюсь), это идентификаторы строк: 9,13,22,24,37,40,43,45,68,93 и 99.

+5

Возможно, вы могли бы попробовать 'geoIncendios [outliers $ id,] <- outliers [1:11,]'. – RHertel

+0

Спасибо, помощник. Я должен вернуться к основам ...: ^) – ramiroaznar

ответ

0

В данных, которые вы указали, geoIncendios$id - это только номер строки data.frame. Предположив, что это верно для всего набора данных, можно использовать (как это было предложено в комментариях по @RHertel)

geoIncendios[outliers$id, ] <- outliers 

Однако, если есть разрывы в столбце идентификатора, или если заказ не является строго такой же, как номера строк, более обобщенным решением является следующее:

geoIncendios[match(outliers$id, geoIncendios$id), ] <- outliers 
+0

Спасибо, Ник за ваш ответ. Данные не имеют разрывов, поэтому первый вариант (как предложенный @RHertel) будет служить (на самом деле, он это сделал). Но я буду держать другого, потому что это может быть очень полезно в будущем. – ramiroaznar

Смежные вопросы