Изменение дублированных значений координат путем добавления десятичного разряда R - PullRequest
0 голосов
/ 26 октября 2018

У меня есть значения координат UTM от GPS-леопардов, и мой анализ будет испорчен, если есть какие-либо точки, которые идентичны. Что я хочу сделать, это добавить 1 в конец десятичной строки, чтобы сделать каждое значение уникальным.

Что у меня есть:

> View(coords)
> coords
          X       Y
1  623190.9 4980021
2  618876.6 4980729
3  618522.7 4980896
4  618522.7 4980096
5  618522.7 4980096
6  622674.1 4976161

Я хочу что-то подобное или что-то, что сделает каждое число уникальным (не должно быть +1)

> coords
          X       Y
1  623190.9 4980021
2  618876.6 4980729
3  618522.7 4980896
4  618522.71 4980096.1
5  618522.72 4977148.2
6  622674.1 4976161

Я посмотрел на существующие вопросы и заставил их работать для смоделированного набора данных, но не для значений с более чем 1 дублированным значением.

DF <- data.frame(A=c(5,5,6,6,7,7), B=c(1, 1, 2, 2, 2, 3))

>View(DF)
  A B
1 5 1
2 5 1
3 6 2
4 6 2
5 7 2
6 7 3

DF <- do.call(rbind, lapply(split(DF, list(DF$A, DF$B)), 
  function(x) {
  x$A <- x$A + seq(0, by=0.1, length.out=nrow(x))
  x$B <- x$B + seq(0, by=0.1, length.out=nrow(x))
  x
}))

>View(DF
         A    B
5.1.1  5.0  1.0
5.1.2  5.1  1.1
6.2.3  6.0  2.0
6.2.4  6.1  2.1
7.2    7.0  2.0
7.3    7.0  3.0

'2s' в столбце B не продолжают добавлять десятичную дробь, когда их больше 2. У меня также была проблема с выполнением этого, когда число было больше 4 цифр (то есть XXXXX против XX). лучший способ сделать это, но я хотел бы помочь с добавлением этих десятичных знаков и, возможно, их изменения в исходном фрейме данных, который имеет 12 столбцов различных данных.

1 Ответ

0 голосов
/ 26 октября 2018

проще в использовании make.unique

DF[] <- lapply(DF, function(x) as.numeric(make.unique(as.character(x))))
DF
#    A   B
#1 5.0 1.0
#2 5.1 1.1
#3 6.0 2.0
#4 6.1 2.1
#5 7.0 2.2
#6 7.1 3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...