R:基于列A中的值的列B中的连接值

时间:2016-06-21 18:13:30

标签: r

问题:使用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中做什么的例子。

Below is an example using Excel to demonstrate what I want to do in R.

3 个答案:

答案 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"))