问题:使用R,如何在B列中创建前缀为常量“1”+ n 0的值,其中n是A列中每行的值?
#R CODE EXAMPLE
df <- as.data.frame(1:3);colnames(df)[1] <- "A";
print(df);
# A
# 1
# 2
# 3
preFixedValue <- 1; repeatedValue <- 0;
#pseudo code: create values in column B with n 0's prefixed with 1
df <- cbind(df,paste(rep(c(preFixedValue,repeatedValue), times = c(1,df[1:nrow(df),])),collapse = ""));
#expected/desired result
# A B
# 1 10
# 2 100
# 3 1000
USE CASE:真实数据在A列中包含数百行,包含随机整数,而不仅仅是上面代码中显示的三个连续int。
下面是一个使用Excel演示我想在R中做什么的例子。
答案 0 :(得分:4)
dplyr中的rowwise()函数允许您从每行的列值中创建变量。
require(dplyr)
df <- data.frame(A = 1:3, B = NA)
preFixedValue <- 1; repeatedValue <- 0;
df <- df %>%
rowwise() %>%
mutate(B = as.numeric(paste0(c(preFixedValue, rep(repeatedValue, A)), collapse = "")))
答案 1 :(得分:1)
这样的事情会起作用吗?
B<-10^(df$A)
df<-cbind(df,B)
答案 2 :(得分:1)
为了获得最大的灵活性,即选择前缀和重复值作为单个值或向量的完全自由,并且为了简化语法(单行):
library(stringr)
df$B <- str_pad(preFixedValue, width = df$A, pad = repeatedValue, side = c("right"))