행렬 (R)의 값을 효율적으로 대체하는 방법

알 브렌

큰 행렬 (m)이 있고 벡터 (values_to_be_replaced)에 저장된 값과 일치하는 행렬 (m)의 값을 새 값 (new_values)으로 바꾸고 싶습니다. 내 벡터 자체는 데이터 프레임에 저장되므로 데이터 프레임을 반복하여 벡터를 얻은 다음 벡터에 행렬 값이 포함되어 있는지 확인할 수 있습니다. 아래 코드는해야 할 일을 수행하지만 입력 데이터에 비해 너무 느립니다. 내 원래 데이터는 4600 개의 행과 5,900 개의 열이있는 행렬이며 750 개 중 가장 큰 벡터에는 비교할 6 백만 개 이상의 숫자가 포함됩니다.

이를 수행하고 계산 시간을 단축하는 더 효율적인 방법이 있다고 생각합니다. 누군가가 그것을 알아 내도록 도와 줄 수 있습니까? (행렬에 -9999 값이 많으므로 건너 뛰면 계산 시간이 향상 될 수 있지만 이것만으로는 충분하지 않습니다.)

다음은 R로 작성된 예입니다.

library("dplyr")
## setting up the input dataframe
df<-setNames(data.frame(matrix(ncol = 4, nrow = 50)), c("ids", "var1", "var2", "var3"))
df$ids<-seq(1, 50,1)
df$var1<-rep(c(2, 4, 2, 1, 3, 5,1, 1,1, 6), each = 5)
df$var2<-rep(c(2, 4, 2, 1, 3, 5,1, 1,1, 6), each = 5)
df$var3<-rep(c(2, 4, 2, 1, 3, 5,1, 1,1, 6), each = 5)

##summarizing it by variables and ids
df<-df%>%
  group_by(var1, var2, var3)%>%
  summarise(ids=toString(ids))%>%data.frame()

##giving a new value by which values in matrix should be replaced
df$new_values<-c("101", "102", "103", "104", "105", "106")

##setting up a matrix
m = matrix( c(16, -9999,17, -9999, 18), nrow=5,  ncol=10, byrow = TRUE)        # fill matrix by rows 

##looping over dataframe
y<-0
for (i in 1:length(df$ids)) {
  values_to_be_replaced<-strsplit(df$ids[i], ",")
  values_to_be_replaced<-unlist(values_to_be_replaced, use.names=FALSE)
  values_to_be_replaced<-gsub(" ", "", values_to_be_replaced, fixed = TRUE)
  print(values_to_be_replaced)
  print(i)
  #print(length(values_to_be_replaced))
  m<-apply(m, 1:2, function(x) ifelse(x %in% values_to_be_replaced, df$new_values[i], x))
  #print(values_to_be_replaced)
  y<-y+1
}
StupidWolf

R에서는 요소를 반복하는 대신 일치하는 요소를 호출 할 수 있습니다.

for (i in 1:length(df$ids)) {
  values_to_be_replaced<-strsplit(gsub(" ","",df$ids[i]), ",")[[1]]
  values_to_be_replaced<-as.numeric(values_to_be_replaced)
  m[m %in% values_to_be_replaced] <- df$new_values[i]
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 행렬의 값에 따라 한 행렬의 값을 효율적으로 이동하는 방법

분류에서Dev

두 개의 행렬 행을 열로 효율적으로 곱하는 방법

분류에서Dev

R에서 희소 행렬의 대각선을 0으로 만드는 메모리 효율적인 방법

분류에서Dev

행렬의 행별로 최소값에 0을 할당하는 방법 (빠르고 효율적인 방법)?

분류에서Dev

행렬의 합을 효율적으로 구하는 방법은 무엇입니까?

분류에서Dev

행의 문자열 값을 기반으로 데이터를 효율적으로 가져 오는 방법

분류에서Dev

(AngularJS) 배열의 값을 전역 적으로 대체하는 가장 효율적인 방법

분류에서Dev

NaN 값이있는 데이터 프레임의 상관 행렬 (p 값 포함)을 효율적으로 얻는 방법은 무엇입니까?

분류에서Dev

효율적인 방법으로 데이터 프레임의 값을 다른 값으로 대체하는 적절한 방법이 있습니까?

분류에서Dev

줄리아-행렬의 대각선을 효율적으로 0으로 바꾸는 방법은 무엇입니까?

분류에서Dev

numpy에서 3D 행렬과 2D 행렬을 효율적으로 곱하는 방법

분류에서Dev

여러 timeseries에 대한 유클리드 거리 행렬을 효율적으로 계산하는 방법

분류에서Dev

특정 간격을 이동하여 하나의 열 행렬을 여러 특정 길이 열로 효율적으로 재구성하는 방법

분류에서Dev

데이터 프레임의 값을 효율적으로 변경하는 방법

분류에서Dev

PHP의 컨텍스트를 기반으로 문자열의 값을 대체하는 효율적이고 효과적인 방법

분류에서Dev

여러 MongoDB 여행을 효율적으로 만드는 방법

분류에서Dev

(희소) 행렬에 행을 효율적으로 삽입하는 방법은 무엇입니까?

분류에서Dev

두 개의 정렬 된 목록을 효율적으로 왼쪽 외부 조인하는 방법

분류에서Dev

시작 인덱스 및 해당 길이 목록을 기반으로 행렬의 열을 삭제하는 가장 효율적인 방법

분류에서Dev

행렬의 3D 스택에서 numpy / scipy로 블록 대각 행렬의 3D 스택을 구성하는 효율적인 방법

분류에서Dev

행렬의 True 값에 인덱스를 할당하는 효율적인 방법

분류에서Dev

Eigen3 라이브러리에서 복잡한 행렬의 실수 / 허수 부분을 효율적으로 추출하는 방법은 무엇입니까?

분류에서Dev

StaticArray를 사용하여 행렬의 블록을 효율적으로 채우기

분류에서Dev

비교를 기반으로 행을 효율적으로 삭제하는 방법

분류에서Dev

행렬의 지정된 위치에서 세 번째 방향을 따라 모든 요소를 효율적으로 얻는 방법은 무엇입니까?

분류에서Dev

데이터 테이블의 각 행을 효율적으로 분할하는 방법

분류에서Dev

R을 사용하여 그룹별로 첫 번째 행의 NA를 0으로 효율적으로 바꾸는 방법

분류에서Dev

Matlab은 행렬 곱의 대각선 값을 효율적으로 가져옵니다.

분류에서Dev

개체 속성의 최대 값을 기준으로 개체 목록을 병합하는 가장 효율적인 방법

Related 관련 기사

  1. 1

    다른 행렬의 값에 따라 한 행렬의 값을 효율적으로 이동하는 방법

  2. 2

    두 개의 행렬 행을 열로 효율적으로 곱하는 방법

  3. 3

    R에서 희소 행렬의 대각선을 0으로 만드는 메모리 효율적인 방법

  4. 4

    행렬의 행별로 최소값에 0을 할당하는 방법 (빠르고 효율적인 방법)?

  5. 5

    행렬의 합을 효율적으로 구하는 방법은 무엇입니까?

  6. 6

    행의 문자열 값을 기반으로 데이터를 효율적으로 가져 오는 방법

  7. 7

    (AngularJS) 배열의 값을 전역 적으로 대체하는 가장 효율적인 방법

  8. 8

    NaN 값이있는 데이터 프레임의 상관 행렬 (p 값 포함)을 효율적으로 얻는 방법은 무엇입니까?

  9. 9

    효율적인 방법으로 데이터 프레임의 값을 다른 값으로 대체하는 적절한 방법이 있습니까?

  10. 10

    줄리아-행렬의 대각선을 효율적으로 0으로 바꾸는 방법은 무엇입니까?

  11. 11

    numpy에서 3D 행렬과 2D 행렬을 효율적으로 곱하는 방법

  12. 12

    여러 timeseries에 대한 유클리드 거리 행렬을 효율적으로 계산하는 방법

  13. 13

    특정 간격을 이동하여 하나의 열 행렬을 여러 특정 길이 열로 효율적으로 재구성하는 방법

  14. 14

    데이터 프레임의 값을 효율적으로 변경하는 방법

  15. 15

    PHP의 컨텍스트를 기반으로 문자열의 값을 대체하는 효율적이고 효과적인 방법

  16. 16

    여러 MongoDB 여행을 효율적으로 만드는 방법

  17. 17

    (희소) 행렬에 행을 효율적으로 삽입하는 방법은 무엇입니까?

  18. 18

    두 개의 정렬 된 목록을 효율적으로 왼쪽 외부 조인하는 방법

  19. 19

    시작 인덱스 및 해당 길이 목록을 기반으로 행렬의 열을 삭제하는 가장 효율적인 방법

  20. 20

    행렬의 3D 스택에서 numpy / scipy로 블록 대각 행렬의 3D 스택을 구성하는 효율적인 방법

  21. 21

    행렬의 True 값에 인덱스를 할당하는 효율적인 방법

  22. 22

    Eigen3 라이브러리에서 복잡한 행렬의 실수 / 허수 부분을 효율적으로 추출하는 방법은 무엇입니까?

  23. 23

    StaticArray를 사용하여 행렬의 블록을 효율적으로 채우기

  24. 24

    비교를 기반으로 행을 효율적으로 삭제하는 방법

  25. 25

    행렬의 지정된 위치에서 세 번째 방향을 따라 모든 요소를 효율적으로 얻는 방법은 무엇입니까?

  26. 26

    데이터 테이블의 각 행을 효율적으로 분할하는 방법

  27. 27

    R을 사용하여 그룹별로 첫 번째 행의 NA를 0으로 효율적으로 바꾸는 방법

  28. 28

    Matlab은 행렬 곱의 대각선 값을 효율적으로 가져옵니다.

  29. 29

    개체 속성의 최대 값을 기준으로 개체 목록을 병합하는 가장 효율적인 방법

뜨겁다태그

보관