ตอบ: วิธีแทนที่ค่าใน data frame แบบมีเงื่อนไข


คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อแทนที่ค่าในกรอบข้อมูลตามเงื่อนไข:

วิธีที่ 1: แทนที่ค่าในกรอบข้อมูลทั้งหมด

 #replace all values in data frame equal to 30 with 0
df[df == 30 ] <- 0

วิธีที่ 2: แทนที่ค่าในคอลัมน์เฉพาะ

 #replace values equal to 30 in 'col1' with 0
df$col1[df$col1 == 30 ] <- 0

วิธีที่ 3: แทนที่ค่าในคอลัมน์เฉพาะตามคอลัมน์อื่น

 #replace values in col2 with 0 based on rows in col1 equal to 30
df$col2[df$col1 == 30 ] <- 0 

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'B'),
                 points=c(99, 90, 90, 88, 88),
                 assists=c(33, 28, 31, 30, 34),
                 rebounds=c(30, 30, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 30
2 A 90 28 30
3 B 90 31 24
4 B 88 30 24
5 B 88 34 28

วิธีที่ 1: แทนที่ค่าในกรอบข้อมูลทั้งหมด

รหัสต่อไปนี้แสดงวิธีแทนที่ค่าทั้งหมดเท่ากับ 30 ใน data frame ด้วย 0:

 #replace all values in data frame equal to 30 with 0
df[df == 30 ] <- 0

#view updated data frame
df
  team points assists rebounds
1 A 99 33 0
2 A 90 28 0
3 B 90 31 24
4 B 88 0 24
5 B 88 34 28

วิธีที่ 2: แทนที่ค่าในคอลัมน์เฉพาะ

รหัสต่อไปนี้แสดงวิธีแทนที่ค่าทั้งหมดเท่ากับ 90 ในคอลัมน์ “คะแนน” ด้วย 0:

 #replace all values equal to 90 in 'points' column with 0
df$points[df$points == 90 ] <- 0

#view updated data frame
df

  team points assists rebounds
1 A 99 33 30
2 A 0 28 30
3 B 0 31 24
4 B 88 30 24
5 B 88 34 28

วิธีที่ 3: แทนที่ค่าในคอลัมน์เฉพาะตามคอลัมน์อื่น

รหัสต่อไปนี้แสดงวิธีแทนที่ค่าในคอลัมน์ “คะแนน” ด้วย 0 โดยที่ค่าในคอลัมน์ “ทีม” เท่ากับ “B”

 #replace all values equal to 90 in 'points' column with 0
df$points[df$team == ' B '] <- 0

#view updated data frame
df

  team points assists rebounds
1 A 99 33 30
2 A 90 28 30
3 B 0 31 24
4 B 0 30 24
5 B 0 34 28

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน R:

ตอบ: วิธีผสานเฟรมข้อมูลตามหลายคอลัมน์
ตอบ: วิธีเพิ่มคอลัมน์ใน data frame โดยอิงจากคอลัมน์อื่น

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *