数据框基于结果集创建多行

时间:2018-09-24 20:57:52

标签: r dataframe

我有一个数据帧,该数据帧的列的值为3898000。我需要创建另一个数据帧,该数据帧将具有10行,其中第一个数据帧的值从我的值中逐渐减少1000。因此最后一个第二个数据帧将具有

3888000
3889000
3890000
3891000
3892000
3893000
3894000
3895000
3896000
3897000

我是R的新手,所以这就是我为此苦苦挣扎的原因。

2 个答案:

答案 0 :(得分:2)

假设您已从第一张表中提取了目标号码。在这里,我们创建了一个新表,其中有一个列,其中填充了一个序列,其中下一行比上一行少1000。 (请注意,OP显示了一个升序,将使用1000代替下面的-1000。)

result_extracted_from_table <- 3898000

new_table <- data.frame(
  my_column = seq(from = result_extracted_from_table, 
  by = -1000, length.out = 10)
)

输出:

new_table
   my_column
1    3898000
2    3897000
3    3896000
4    3895000
5    3894000
6    3893000
7    3892000
8    3891000
9    3890000
10   3889000

答案 1 :(得分:1)

您可以使用seq()创建一个从1,000开始的序列,并为dplyr::data_frame()中的每一行增加1,000。 dplyr::mutate()用于从初始列中减去序列并将结果放入新列中:

library(dplyr)

data_frame(v1 = rep(3898000, 10)) %>%
  mutate(v2 = v1 - seq(1000, 1000*nrow(.), 1000))

#        v1      v2
#     <dbl>   <dbl>
# 1 3898000 3897000
# 2 3898000 3896000
# 3 3898000 3895000
# 4 3898000 3894000
# 5 3898000 3893000
# 6 3898000 3892000
# 7 3898000 3891000
# 8 3898000 3890000
# 9 3898000 3889000
# 10 3898000 3888000

dplyr::select()然后可以用于创建仅包含新值的data_frame。