我有一个60000 obs的数据框。以下格式的4个变量:
我需要将第一列中的所有字符项替换为具有数字1的相同字符。因此“101-startups”为1,“10i10-aps”为2,10x为3且所有10x-fund-lp是4等等。第二列也是如此。
我如何实现这一目标?
答案 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)]