여러 조건에 따라 열의 특정 값만 교체

조류

많은 열을 포함하는 큰 데이터 프레임이 있지만 관련 항목은 ID (주제에 할당 된 번호), 시간 (이 주제를 측정 한 시간) 및 농도입니다. 매우 간단한 예는 다음과 같습니다.

df <- data.frame( ID=c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3),
                  Concentration=c("XXX",0.3,0.7,0.6,"XXX","XXX",0.8,0.3,"XXX","XXX",
                                  "XXX",0.6,0.1,0.1,"XXX"),
                  Time=c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5))

나는 대체하려는 경우에만 다음과 같은 조건에 따라 열 농도에서 "XXX"값 :

  1. Time 열의 값이 3보다 작거나 같을 때; "XXX"== 0
  2. Time 열의 값이 3보다 클 때; 시간> 3에 대해 단일 주제 (ID)에 대해 두 개의 연속 "XXX"값이 나타나지 않는 한 "XXX"는 단어 "Missing" 으로 대체되어야하며 첫 번째 연속 "XXX"는 0.05로 대체되고 두 번째 연속 "XXX"는 대체되어야합니다. (또는 더 많은 경우 다음 모든 "XXX"값)을 "Missing"이라는 단어로 바꿔야합니다.

mutate_at 및 replace_na, 일부 ifelse 문 및 case_when을 시도했지만 올바르게 수행하는 방법을 알아낼 수없는 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다!

편집 : 작업을 보여주기 위해 :

df[df == "XXX" & df$Time<3] <- as.numeric(0)
df[df == "BLQ" & df$Time>3] <- as.character("Missing")

나는 내 문제의 처음 두 부분을 처리하는 간단하고 강력한 해결책을 찾았다. 내가 붙어있는 것은 마지막 부분이다.-시간 이후에 하나의 주제에 대해 두 개 이상의 연속적인 "XXX"값이있을 때> 삼. 나는 ifelse 문을 반복하고 ID 또는 이와 비슷한 목록을 색인화해야한다고 생각하지만 어떻게하는지 알아낼 수 없습니다. 하나의 ID의 최종 농도와 다음 ID의 첫 번째 농도로 "XXX"가있을 수 있기 때문에 여기에서 ID를 분리하는 것이 매우 중요합니다.이 값을 다음에 대한 두 개의 연속 "XXX"값으로 읽지 않기를 바랍니다. 단일 ID.

Manuzambo

나는 tidyverse의 몇 가지 기능을 사용하여 그것을 해결했고, 또한 당신의 예제에 다른 레코드를 추가했습니다.

rm(list = ls(all=TRUE))

require(tidyverse)

df <- data.frame( ID=c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,3,3),
                  Concentration=c("XXX",0.3,0.7,0.6,"XXX","XXX",0.8,0.3,"XXX","XXX",
                                  "XXX",0.6,0.1,0.1,"XXX",0.2,"XXX","XXX",1),
                  Time=c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,6,7,8,9))

df <- tibble(df) %>% 
  mutate(Concentration = as.character(Concentration),
         Concentration_Original = Concentration) %>% 
  mutate(Concentration = ifelse(Concentration == 'XXX' & Time <= 3, "0", Concentration)) %>%
  group_by(ID) %>% 
  mutate(Concentration = ifelse(Concentration == 'XXX' & Concentration == lead(Concentration),
                                  "0.05", ifelse(Concentration == 'XXX',
                                                 "Missing", Concentration))) %>% 
  replace_na(list(Concentration = "Missing")) %>% ungroup()

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

조건에 따라 열의 여러 요소로 교체

분류에서Dev

여러 열의 조건에 따라 데이터 프레임 열의 특정 값 변경

분류에서Dev

특정 조건에 따라 NaN을 다른 열의 값으로 대체

분류에서Dev

조건에 따라 여러 열 값을 NaN으로 설정

분류에서Dev

Python의 특정 조건에 따라 CSV 파일의 여러 열 삭제

분류에서Dev

Python의 조건에 따라 여러 열 값 업데이트

분류에서Dev

여러 열의 조건에 따라 값 반환

분류에서Dev

조건에 따라 여러 열의 값을 Pandas로 바꾸기

분류에서Dev

벡터화 : 조건에 따라 여러 열의 값 변경

분류에서Dev

배열의 특정 값 존재 여부에 따라 조건부로 아이콘 렌더링

분류에서Dev

특정 열의 셀을 복사하여 조건에 따라 다른 Sheet의 특정 열에있는 셀에 붙여 넣기 (값)하는 VBA 코드

분류에서Dev

객체 속성에 따라 배열을 정렬하지만 nil? Ruby의 조건

분류에서Dev

forloop를 사용하여 r의 조건에 따라 값 수정

분류에서Dev

조건에 따라 열 이름 및 특정 값 추출

분류에서Dev

Rails 4의 특정 조건에 따라 여러 레코드 삭제

분류에서Dev

Pandas-여러 조건에 따라 빈 열에 값 할당

분류에서Dev

조건에 따라 여러 행에 대한 열 값 연결

분류에서Dev

조건에 따라 여러 열에서 값 바꾸기

분류에서Dev

여러 열 조건에 따라 새 열 If Else 만들기

분류에서Dev

Python : 여러 조건에 따라 행에서 새 열 만들기

분류에서Dev

여러 조건부 기준에 따라 열 값 할당

분류에서Dev

하나의 값에 따라 여러 열 서식 지정

분류에서Dev

조건에 따라 특정 열 삭제

분류에서Dev

r의 조건에 따라 특정 관측치를 새로운 관측치 세트로 교체

분류에서Dev

Java 스트림, 객체의 조건에 따라 필터링, 값을 문자열 및 배열로 설정

분류에서Dev

조건에 따라 numpy 배열의 최소 요소 교체

분류에서Dev

특정 조건에 따라 두 열에서 빈도 표 만들기

분류에서Dev

특정 값을 복사하여 조건에 따라 Google Sheet의 다른 시트의 특정 셀에 붙여 넣습니다.

분류에서Dev

열 값에 따라 다른 조건으로 여러 열에 조건이 지정된 데이터 프레임 필터링

Related 관련 기사

  1. 1

    조건에 따라 열의 여러 요소로 교체

  2. 2

    여러 열의 조건에 따라 데이터 프레임 열의 특정 값 변경

  3. 3

    특정 조건에 따라 NaN을 다른 열의 값으로 대체

  4. 4

    조건에 따라 여러 열 값을 NaN으로 설정

  5. 5

    Python의 특정 조건에 따라 CSV 파일의 여러 열 삭제

  6. 6

    Python의 조건에 따라 여러 열 값 업데이트

  7. 7

    여러 열의 조건에 따라 값 반환

  8. 8

    조건에 따라 여러 열의 값을 Pandas로 바꾸기

  9. 9

    벡터화 : 조건에 따라 여러 열의 값 변경

  10. 10

    배열의 특정 값 존재 여부에 따라 조건부로 아이콘 렌더링

  11. 11

    특정 열의 셀을 복사하여 조건에 따라 다른 Sheet의 특정 열에있는 셀에 붙여 넣기 (값)하는 VBA 코드

  12. 12

    객체 속성에 따라 배열을 정렬하지만 nil? Ruby의 조건

  13. 13

    forloop를 사용하여 r의 조건에 따라 값 수정

  14. 14

    조건에 따라 열 이름 및 특정 값 추출

  15. 15

    Rails 4의 특정 조건에 따라 여러 레코드 삭제

  16. 16

    Pandas-여러 조건에 따라 빈 열에 값 할당

  17. 17

    조건에 따라 여러 행에 대한 열 값 연결

  18. 18

    조건에 따라 여러 열에서 값 바꾸기

  19. 19

    여러 열 조건에 따라 새 열 If Else 만들기

  20. 20

    Python : 여러 조건에 따라 행에서 새 열 만들기

  21. 21

    여러 조건부 기준에 따라 열 값 할당

  22. 22

    하나의 값에 따라 여러 열 서식 지정

  23. 23

    조건에 따라 특정 열 삭제

  24. 24

    r의 조건에 따라 특정 관측치를 새로운 관측치 세트로 교체

  25. 25

    Java 스트림, 객체의 조건에 따라 필터링, 값을 문자열 및 배열로 설정

  26. 26

    조건에 따라 numpy 배열의 최소 요소 교체

  27. 27

    특정 조건에 따라 두 열에서 빈도 표 만들기

  28. 28

    특정 값을 복사하여 조건에 따라 Google Sheet의 다른 시트의 특정 셀에 붙여 넣습니다.

  29. 29

    열 값에 따라 다른 조건으로 여러 열에 조건이 지정된 데이터 프레임 필터링

뜨겁다태그

보관