所以我有一个相对简单的问题(我认为那里的问题可能有些重复),但是我似乎无法弄清楚,我将非常感谢您的帮助。
我有一个数据集,并且在一列中有多行不同的11位数字。我希望获得每个数字的最后6位数字,并希望能够在数据集中用结果创建一个新列。
下面是一个示例:
random_num <- c(11001100100, 11001100300, 11001100400,
11001100501, 11001100502, 11001100600)
random_stuff <- c(2, 5, 6, 2, 5, 3)
data_frame <- cbind(random_num, random_stuff)
我希望得到一个显示如下内容的输出:
到目前为止,这就是我所拥有的:
conversion <- function (x) {
for (i in nrow(x))
{
c <- as.character[i]
be <- substring(c, seq(1, nchar(c), 1), seq(1, nchar(c), 1))
ad <- paste(be[6], be[7], be[8], be[9], be[10], be[11], sep = "")
final <- as.numeric(ad)
return(final)
}
}
finalr <- conversion(data_frame)
finalr
但是我要么收到错误消息,说
“ as.character [i]中的错误:'buildin'类型的对象不可子集化”或“ mutate_impl(.data,点)中的错误:评估错误:'to'的长度必须为1。'>
将非常感谢您的任何建议。谢谢!
答案 0 :(得分:1)
就我所能来说,result
列/向量只是random_num
向量的最后六位数字。因此,我们可以使用模数来计算:
random_num <- c(1100100100, 1100100300, 1100100400,
1100100501, 1100100502, 1100100600)
result <- random_num %% 1000000
result
[1] 100100 100300 100400 100501 100502 100600
此答案避免了从数字到字符的潜在不必要的转换。
答案 1 :(得分:0)
我已将您的数据集转换为数据框:
random_num <- c(11001100100, 11001100300, 11001100400,
11001100501, 11001100502, 11001100600)
random_stuff <- c(2, 5, 6, 2, 5, 3)
data_frame <- data.frame(random_num, random_stuff)
data_frame$result <- substring(data_frame$random_num, nchar(data_frame$random_num)-6+1)
> data_frame
random_num random_stuff result
1 11001100100 2 100100
2 11001100300 5 100300
3 11001100400 6 100400
4 11001100501 2 100501
5 11001100502 5 100502
6 11001100600 3 100600