R用不断增加的数字替换相同的列字符项

时间:2017-05-02 21:22:19

标签: r

我有一个60000 obs的数据框。以下格式的4个变量:

enter image description here

我需要将第一列中的所有字符项替换为具有数字1的相同字符。因此“101-startups”为1,“10i10-aps”为2,10x为3且所有10x-fund-lp是4等等。第二列也是如此。

我如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您需要做的就是:

my_data$col_1 <- as.integer(factor(my_data$col1, levels = unique(my_data$col1))
my_data$col_2 <- as.integer(factor(my_data$col2, levels = unique(my_data$col2))

阅读factors

可能是一个好主意

答案 1 :(得分:0)

尝试从该列的唯一条目构建单独的数据框,然后使用行名称(将是连续的整数)。如果您的数据框为df且第一列为v1,则类似

x = data.frame(v1 = unique(df$v1))
x$numbers = row.names(x)

然后你可以做某种合并

final.df = merge(x, df, by = "v1")

然后使用类似dplyr的内容来选择/删除/重新排列列

答案 2 :(得分:0)

假设第一个变量在v1中被称为df

我会使用匹配。当然,您需要首先获得唯一值:

#Get the unique values 
x <- data.frame(unique(df$v1))
colnames(x) <- c("v1")

#x$v2 = row.names(x)
#Assign the numbers (Just wanted to show another way of approaching this)
x$v2 <- seq(from = 1, to = nrow(x))

然后用这些数字替换你想要的列:

#substitute the values with the corresponding numbers
df$v1 <- x$v2[match(df$v1,x$v1)]