데이터 프레임에서 데이터 필터링

user1758995

다음과 같은 데이터 프레임이 있습니다.

S1State S1Value S2State S2Value
NSW     20      VIC     30
WA      30      NSW     20

최대 값 (S1Value 및 S2Value)을 가진 상태 (S1State 및 S2State에서)를 필터링하고 선택하고 싶습니다. 결과는 다음과 같습니다.

SState  SValue
VIC     30
WA      30

나는 R을 처음 사용하고 dplyr을 실험했습니다.

www

나는 영업 이익은 같은 데이터 프레임에 더 많은 상태를 가질 수 있다고 가정 S3State, S4State...

다음 솔루션은 두 개 이상의 상태를 처리 할 수 ​​있도록이 가정을 기반으로합니다. 상태가 두 개뿐이라면 @lebelinoz가 제안한 접근 방식은 간단하고 간단합니다.

해결책 1

dplyr및의 함수를 사용하는 솔루션 tidyr입니다. dt2최종 출력입니다.

# Load packages
library(dplyr)
library(tidyr)

# Process the data
dt2 <- dt %>%
  gather(Num, Value, contains("Value")) %>%
  gather(State, Name, contains("State")) %>%
  # Only keep records with the same state number
  filter(substring(Num, 1, 2) == substring(State, 1, 2)) %>%
  mutate(Group = substring(Num, 1, 2)) %>%
  group_by(Group) %>%
  filter(Value == max(Value)) %>%
  ungroup() %>%
  select(SState = Name, SSValue = Value)

해결책 2

A로부터 함수를 사용하여 용액 dplyr, purrrstringr. tidyverse처음 두 패키지 의 패키지 로드했습니다 . 다시 말하지만 dt2최종 결과물입니다.

# Load packages
library(tidyverse)
library(stringr)

# Extract the column names
Col <- colnames(dt)

# Extract state numbers
ColNum <- Col %>%
  str_extract(pattern = "[0-9]") %>%
  unique()

# Design a function to process the data
dt_process <- function(pattern, dt){
  dt2 <- dt %>%
    # Extract columns based on a pattern (numbers)
    select(dplyr::contains(pattern)) %>%
    # Rename the columns
    rename_all(~sub(pattern, "", .)) %>%
    # Filter the maximum row
    filter(SValue == max(SValue))
  return(dt2)
}

# Apply the dt_process function
dt_list <- map(.x = ColNum, .f = dt_process, dt = dt)

# Bind all data frames
dt2 <- bind_rows(dt_list) %>% arrange(SState)

데이터 준비

# Create example data frame
    dt <- read.table(text = "S1State S1Value S2State S2Value
                     NSW     20      VIC     30
                     WA      30      NSW     20",
                     header = TRUE, stringsAsFactors = FALSE)

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Pyspark 데이터 프레임 필터링

분류에서Dev

데이터 프레임 필터링

분류에서Dev

Pandas 데이터 프레임에서 중복 반복 데이터 필터링

분류에서Dev

JSON 입력에서 데이터 프레임 필터링

분류에서Dev

Webscrape에서 데이터 프레임 필터링 및 포맷

분류에서Dev

R에서 데이터 프레임의 특수 필터링

분류에서Dev

데이터 프레임에서 날짜 필터링

분류에서Dev

데이터 프레임에서 행 필터링

분류에서Dev

데이터 프레임 R에서 고유 쌍 필터링

분류에서Dev

데이터 프레임에서 구두점 필터링

분류에서Dev

R에서 날짜별로 데이터 프레임 필터링

분류에서Dev

Pandas에서 데이터 프레임 필터링

분류에서Dev

Yii 프레임 워크 문제에서 데이터 필터링?

분류에서Dev

Python-데이터 프레임에서 라인 필터링

분류에서Dev

R에서 데이터 프레임 필터링

분류에서Dev

Spark에서 데이터 프레임 열 분할 및 필터링

분류에서Dev

다른 데이터 프레임의 열로 데이터 프레임 필터링

분류에서Dev

조건에 따라 데이터 프레임 행 필터링 Pandas

분류에서Dev

동시에 데이터 프레임 행 필터링 및 제한

분류에서Dev

값 순위에 따라 데이터 프레임 필터링

분류에서Dev

열에 따라 데이터 프레임 행 필터링

분류에서Dev

PySpark-이 데이터 프레임에서 행을 필터링하는 방법

분류에서Dev

샤이니 내 동적 변수에서 데이터 프레임 행 필터링

분류에서Dev

for 루프를 사용하여 R에서 데이터 프레임 필터링

분류에서Dev

Tensorflow에서 데이터 필터링

분류에서Dev

R : plm에서 데이터 필터링

분류에서Dev

데이터에서 "피크"필터링

분류에서Dev

DataGridViewer에서 데이터 필터링

분류에서Dev

Python에서 데이터 필터링

Related 관련 기사

뜨겁다태그

보관