在R
中,您有一个包含文字数据的特定数据框,例如第二列有单词而不是数字。如何在第二列中删除带有特定单词(例如“total”)的数据框行? data <- data[-(data[,2] == "total"),]
对我不起作用。
此外,还有一种简单的方法可以将这些单词按顺序转换为数字吗? (即,第一个单词变为1,第二个单词变为2,依此类推。)我宁愿不使用循环...
答案 0 :(得分:2)
您可以使用!
来否定。对于序列,请使用seq_along
或as.numeric(factor(.))
,具体取决于您实际需要的内容。
以下是一些示例数据:
set.seed(1)
mydf <- data.frame(V1 = 1:15, V2 = sample(LETTERS[1:3], 15, TRUE))
mydf
# V1 V2
# 1 1 A
# 2 2 B
# 3 3 B
# 4 4 C
# 5 5 A
# 6 6 C
# 7 7 C
# 8 8 B
# 9 9 B
# 10 10 A
# 11 11 A
# 12 12 A
# 13 13 C
# 14 14 B
# 15 15 C
让我们删除“V2”列中存在“A”的所有行:
mydf2 <- mydf[!mydf$V2 == "A", ]
mydf2
# V1 V2
# 2 2 B
# 3 3 B
# 4 4 C
# 6 6 C
# 7 7 C
# 8 8 B
# 9 9 B
# 13 13 C
# 14 14 B
# 15 15 C
现在,让我们创建两个新列。第一个顺序计数列“V2”中每个“单词”的每次出现。第二个将每个唯一的“单词”转换为数字。
mydf2$Seq <- ave(as.character(mydf2$V2), mydf2$V2, FUN = seq_along)
mydf2$WordAsNum <- as.numeric(factor(mydf2$V2))
mydf2
# V1 V2 Seq WordAsNum
# 2 2 B 1 1
# 3 3 B 2 1
# 4 4 C 1 2
# 6 6 C 2 2
# 7 7 C 3 2
# 8 8 B 3 1
# 9 9 B 4 1
# 13 13 C 4 2
# 14 14 B 5 1
# 15 15 C 5 2