R: проверка нескольких данных.кадр на основе дублированных строк и реорганизация данных

#r #list #dataframe

#r #Список #фрейм данных

Вопрос:

 mydata <- structure(list(X1 = c(1, 1, 1, 1, 1, 1), X2 = c(1, 4, 4, 3, 2, 
2), X3 = c(1, 2, 2, 3, 3, 3), X1 = c(-1, 1, 1, 1, -1, -1), X2 = c(1, 
-1, -1, 1, -1, -1), X3 = c(1, -1, 1, 1, -1, -1)), class = "data.frame", row.names = c(NA, 
-6L))

values <- data.frame(rbind(c(1, -3),
                           c(-99, 20),
                           c(1, 0),
                           c(0, 0),
                           c(-9, 0.3),
                           c(-99, 11)))
 

У меня есть 2 data.frame с, mydata , и values . Оба data.frames имеют 6 строк. Сначала я хочу идентифицировать уникальные строки mydata .

 > mydata
  X1 X2 X3 X1 X2 X3
1  1  1  1 -1  1  1
2  1  4  2  1 -1 -1
3  1  4  2  1 -1  1
4  1  3  3  1  1  1
5  1  2  3 -1 -1 -1
6  1  2  3 -1 -1 -1
 

Существует 5 уникальных групп:

#1 1 1 1 -1 1 1

#2 1 4 2 1 -1 -1

#3 1 4 2 1 -1 1

#4 1 3 3 1 1 1

#5 1 2 3 -1 -1 -1

Для каждой из этих 5 групп я хочу создать новый список длиной 5, по одному на уникальную группу, и сохранить соответствующие строки из values .

 > values
   X1   X2
1   1 -3.0
2 -99 20.0
3   1  0.0
4   0  0.0
5  -9  0.3
6 -99 11.0
 

Таким образом, результирующий список может выглядеть так:

 > mylist
[[1]]
[1] 1 -3.0

[[2]]
[1] -99 20.0

[[3]]
[1] 1  0.0

[[4]]
[1] 0  0.0

[[5]]
     X1     X2
1    -9    0.3
2   -99   11.0
 

Ответ №1:

Вы можете вставить значения по строкам и найти уникальные группы, которые можно использовать для split строк values .

 val <- do.call(paste, c(mydata, sep = '-'))
group <- match(val, unique(val))
split(values, group)

#
 #r #list #dataframe

 #r #Список #фрейм данных

Вопрос:

 mydata <- structure(list(X1 = c(1, 1, 1, 1, 1, 1), X2 = c(1, 4, 4, 3, 2, 
2), X3 = c(1, 2, 2, 3, 3, 3), X1 = c(-1, 1, 1, 1, -1, -1), X2 = c(1, 
-1, -1, 1, -1, -1), X3 = c(1, -1, 1, 1, -1, -1)), class = "data.frame", row.names = c(NA, 
-6L))

values <- data.frame(rbind(c(1, -3),
                           c(-99, 20),
                           c(1, 0),
                           c(0, 0),
                           c(-9, 0.3),
                           c(-99, 11)))
 

У меня есть 2 data.frame с, mydata , и values . Оба data.frames имеют 6 строк. Сначала я хочу идентифицировать уникальные строки mydata .

 > mydata
  X1 X2 X3 X1 X2 X3
1  1  1  1 -1  1  1
2  1  4  2  1 -1 -1
3  1  4  2  1 -1  1
4  1  3  3  1  1  1
5  1  2  3 -1 -1 -1
6  1  2  3 -1 -1 -1
 

Существует 5 уникальных групп:

#1 1 1 1 -1 1 1

#2 1 4 2 1 -1 -1

#3 1 4 2 1 -1 1

#4 1 3 3 1 1 1

#5 1 2 3 -1 -1 -1

Для каждой из этих 5 групп я хочу создать новый список длиной 5, по одному на уникальную группу, и сохранить соответствующие строки из values .

 > values
   X1   X2
1   1 -3.0
2 -99 20.0
3   1  0.0
4   0  0.0
5  -9  0.3
6 -99 11.0
 

Таким образом, результирующий список может выглядеть так:

 > mylist
[[1]]
[1] 1 -3.0

[[2]]
[1] -99 20.0

[[3]]
[1] 1  0.0

[[4]]
[1] 0  0.0

[[5]]
     X1     X2
1    -9    0.3
2   -99   11.0
 

Ответ №1:

Вы можете вставить значения по строкам и найти уникальные группы, которые можно использовать для split строк values .

1`
# X1 X2
#1 1 -3

#

#r #list #dataframe

#r #Список #фрейм данных

Вопрос:

 mydata <- structure(list(X1 = c(1, 1, 1, 1, 1, 1), X2 = c(1, 4, 4, 3, 2, 
2), X3 = c(1, 2, 2, 3, 3, 3), X1 = c(-1, 1, 1, 1, -1, -1), X2 = c(1, 
-1, -1, 1, -1, -1), X3 = c(1, -1, 1, 1, -1, -1)), class = "data.frame", row.names = c(NA, 
-6L))

values <- data.frame(rbind(c(1, -3),
                           c(-99, 20),
                           c(1, 0),
                           c(0, 0),
                           c(-9, 0.3),
                           c(-99, 11)))
 

У меня есть 2 data.frame с, mydata , и values . Оба data.frames имеют 6 строк. Сначала я хочу идентифицировать уникальные строки mydata .

 > mydata
  X1 X2 X3 X1 X2 X3
1  1  1  1 -1  1  1
2  1  4  2  1 -1 -1
3  1  4  2  1 -1  1
4  1  3  3  1  1  1
5  1  2  3 -1 -1 -1
6  1  2  3 -1 -1 -1
 

Существует 5 уникальных групп:

#1 1 1 1 -1 1 1

#2 1 4 2 1 -1 -1

#3 1 4 2 1 -1 1

#4 1 3 3 1 1 1

#5 1 2 3 -1 -1 -1

Для каждой из этих 5 групп я хочу создать новый список длиной 5, по одному на уникальную группу, и сохранить соответствующие строки из values .

 > values
   X1   X2
1   1 -3.0
2 -99 20.0
3   1  0.0
4   0  0.0
5  -9  0.3
6 -99 11.0
 

Таким образом, результирующий список может выглядеть так:

 > mylist
[[1]]
[1] 1 -3.0

[[2]]
[1] -99 20.0

[[3]]
[1] 1  0.0

[[4]]
[1] 0  0.0

[[5]]
     X1     X2
1    -9    0.3
2   -99   11.0
 

Ответ №1:

Вы можете вставить значения по строкам и найти уникальные группы, которые можно использовать для split строк values .

2`
# X1 X2
#2 -99 20

#

#r #list #dataframe

#r #Список #фрейм данных

Вопрос:

 mydata <- structure(list(X1 = c(1, 1, 1, 1, 1, 1), X2 = c(1, 4, 4, 3, 2, 
2), X3 = c(1, 2, 2, 3, 3, 3), X1 = c(-1, 1, 1, 1, -1, -1), X2 = c(1, 
-1, -1, 1, -1, -1), X3 = c(1, -1, 1, 1, -1, -1)), class = "data.frame", row.names = c(NA, 
-6L))

values <- data.frame(rbind(c(1, -3),
                           c(-99, 20),
                           c(1, 0),
                           c(0, 0),
                           c(-9, 0.3),
                           c(-99, 11)))
 

У меня есть 2 data.frame с, mydata , и values . Оба data.frames имеют 6 строк. Сначала я хочу идентифицировать уникальные строки mydata .

 > mydata
  X1 X2 X3 X1 X2 X3
1  1  1  1 -1  1  1
2  1  4  2  1 -1 -1
3  1  4  2  1 -1  1
4  1  3  3  1  1  1
5  1  2  3 -1 -1 -1
6  1  2  3 -1 -1 -1
 

Существует 5 уникальных групп:

#1 1 1 1 -1 1 1

#2 1 4 2 1 -1 -1

#3 1 4 2 1 -1 1

#4 1 3 3 1 1 1

#5 1 2 3 -1 -1 -1

Для каждой из этих 5 групп я хочу создать новый список длиной 5, по одному на уникальную группу, и сохранить соответствующие строки из values .

 > values
   X1   X2
1   1 -3.0
2 -99 20.0
3   1  0.0
4   0  0.0
5  -9  0.3
6 -99 11.0
 

Таким образом, результирующий список может выглядеть так:

 > mylist
[[1]]
[1] 1 -3.0

[[2]]
[1] -99 20.0

[[3]]
[1] 1  0.0

[[4]]
[1] 0  0.0

[[5]]
     X1     X2
1    -9    0.3
2   -99   11.0
 

Ответ №1:

Вы можете вставить значения по строкам и найти уникальные группы, которые можно использовать для split строк values .

3`
# X1 X2
#3 1 0

#

#r #list #dataframe

#r #Список #фрейм данных

Вопрос:

 mydata <- structure(list(X1 = c(1, 1, 1, 1, 1, 1), X2 = c(1, 4, 4, 3, 2, 
2), X3 = c(1, 2, 2, 3, 3, 3), X1 = c(-1, 1, 1, 1, -1, -1), X2 = c(1, 
-1, -1, 1, -1, -1), X3 = c(1, -1, 1, 1, -1, -1)), class = "data.frame", row.names = c(NA, 
-6L))

values <- data.frame(rbind(c(1, -3),
                           c(-99, 20),
                           c(1, 0),
                           c(0, 0),
                           c(-9, 0.3),
                           c(-99, 11)))
 

У меня есть 2 data.frame с, mydata , и values . Оба data.frames имеют 6 строк. Сначала я хочу идентифицировать уникальные строки mydata .

 > mydata
  X1 X2 X3 X1 X2 X3
1  1  1  1 -1  1  1
2  1  4  2  1 -1 -1
3  1  4  2  1 -1  1
4  1  3  3  1  1  1
5  1  2  3 -1 -1 -1
6  1  2  3 -1 -1 -1
 

Существует 5 уникальных групп:

#1 1 1 1 -1 1 1

#2 1 4 2 1 -1 -1

#3 1 4 2 1 -1 1

#4 1 3 3 1 1 1

#5 1 2 3 -1 -1 -1

Для каждой из этих 5 групп я хочу создать новый список длиной 5, по одному на уникальную группу, и сохранить соответствующие строки из values .

 > values
   X1   X2
1   1 -3.0
2 -99 20.0
3   1  0.0
4   0  0.0
5  -9  0.3
6 -99 11.0
 

Таким образом, результирующий список может выглядеть так:

 > mylist
[[1]]
[1] 1 -3.0

[[2]]
[1] -99 20.0

[[3]]
[1] 1  0.0

[[4]]
[1] 0  0.0

[[5]]
     X1     X2
1    -9    0.3
2   -99   11.0
 

Ответ №1:

Вы можете вставить значения по строкам и найти уникальные группы, которые можно использовать для split строк values .

4`
# X1 X2
#4 0 0

#

#r #list #dataframe

#r #Список #фрейм данных

Вопрос:

 mydata <- structure(list(X1 = c(1, 1, 1, 1, 1, 1), X2 = c(1, 4, 4, 3, 2, 
2), X3 = c(1, 2, 2, 3, 3, 3), X1 = c(-1, 1, 1, 1, -1, -1), X2 = c(1, 
-1, -1, 1, -1, -1), X3 = c(1, -1, 1, 1, -1, -1)), class = "data.frame", row.names = c(NA, 
-6L))

values <- data.frame(rbind(c(1, -3),
                           c(-99, 20),
                           c(1, 0),
                           c(0, 0),
                           c(-9, 0.3),
                           c(-99, 11)))
 

У меня есть 2 data.frame с, mydata , и values . Оба data.frames имеют 6 строк. Сначала я хочу идентифицировать уникальные строки mydata .

 > mydata
  X1 X2 X3 X1 X2 X3
1  1  1  1 -1  1  1
2  1  4  2  1 -1 -1
3  1  4  2  1 -1  1
4  1  3  3  1  1  1
5  1  2  3 -1 -1 -1
6  1  2  3 -1 -1 -1
 

Существует 5 уникальных групп:

#1 1 1 1 -1 1 1

#2 1 4 2 1 -1 -1

#3 1 4 2 1 -1 1

#4 1 3 3 1 1 1

#5 1 2 3 -1 -1 -1

Для каждой из этих 5 групп я хочу создать новый список длиной 5, по одному на уникальную группу, и сохранить соответствующие строки из values .

 > values
   X1   X2
1   1 -3.0
2 -99 20.0
3   1  0.0
4   0  0.0
5  -9  0.3
6 -99 11.0
 

Таким образом, результирующий список может выглядеть так:

 > mylist
[[1]]
[1] 1 -3.0

[[2]]
[1] -99 20.0

[[3]]
[1] 1  0.0

[[4]]
[1] 0  0.0

[[5]]
     X1     X2
1    -9    0.3
2   -99   11.0
 

Ответ №1:

Вы можете вставить значения по строкам и найти уникальные группы, которые можно использовать для split строк values .

5`
# X1 X2
#5 -9 0.3
#6 -99 11.0

Комментарии:

1. Возможно ли отслеживать группы? т.Е. Называть каждый список соответствующей последовательностью? 1 1 1 -1 1 1 , 1 4 2 1 -1 -1 , и т.д. Или каким-то другим способом, чтобы я знал, что есть что?

2. Вы можете назначить group вектор своему mydata или values . mydata$group <- group или values$group <- group .