r - 有条件地填充数据框的行

标签 r dataframe

我有一个我想填充的这种结构的数据框:

    V1      V2  V3  V4  V5  V6  V7  V8
1   ID_CODE 0   0   0   0   0   0   0
2   THIS    0   0   0   0   0   0   0
3   ISAROW  0   0   0   0   0   0   0
4   01      0   0   0   0   0   0   0
5   02      0   0   0   0   0   0   0
6   03      0   0   0   0   0   0   0
7   ID_CODE 0   0   0   0   0   0   0
8   THESE   0   0   0   0   0   0   0
9   ARE     0   0   0   0   0   0   0
10  MORE    0   0   0   0   0   0   0
11  ROWS    0   0   0   0   0   0   0
12  01      0   0   0   0   0   0   0
13  02      0   0   0   0   0   0   0
14  03      0   0   0   0   0   0   0
15  ROW     0   0   0   0   0   0   0

这个数据框带有用于填充它的数字:
  V2_1 V2_2 V2_3 V2_4 V2_5 V2_6 V2_7
1 786  786  786  786  786  786  786
2 786  786  786  786  786  786  786
3 78   78   78   78   78   78   78
4 78   78   78   78   78   78   78
5 78   78   78   78   78   78   78
6 78   78   78   78   78   78   78

这些数字将进入 V2:V8 列,并且仅位于 V1 为数字的行中。 V1 是字符串的行将保持为零。

最佳答案

df1是原件和df2替换,然后我们可以使用Map来替换子集。

## find the rows with only digits in the first column
rows <- grepl("^\\d+$", df1$V1)
## replace the subset with 'df2'
df1[rows, -1] <- Map("[<-", df1[rows, -1], df2)
df1
#         V1  V2  V3  V4  V5  V6  V7  V8
# 1  ID_CODE   0   0   0   0   0   0   0
# 2     THIS   0   0   0   0   0   0   0
# 3   ISAROW   0   0   0   0   0   0   0
# 4       01 786 786 786 786 786 786 786
# 5       02 786 786 786 786 786 786 786
# 6       03  78  78  78  78  78  78  78
# 7  ID_CODE   0   0   0   0   0   0   0
# 8    THESE   0   0   0   0   0   0   0
# 9      ARE   0   0   0   0   0   0   0
# 10    MORE   0   0   0   0   0   0   0
# 11    ROWS   0   0   0   0   0   0   0
# 12      01  78  78  78  78  78  78  78
# 13      02  78  78  78  78  78  78  78
# 14      03  78  78  78  78  78  78  78
# 15     ROW   0   0   0   0   0   0   0

或者,另一种方法是使用 replace()
df1[rows, -1] <- Map(function(x, y) replace(x, rows, y), df1[-1], df2)

关于r - 有条件地填充数据框的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733794/

相关文章:

r - Predict.glm(, type ="terms") 实际上做了什么?

math - 如何集成/链接 R 和计算机代数系统 (CAS)

r - 如何仅使用 ggplot2 命令将 "break"连续变量转换为离散区间

r - 如何用 NAs - R 简单地计算行数

python - Pandas 组中的唯一值

r - 如何从 R 的部分依赖图中选择一个图?

r - 包含唯一值数字的列

python - 如何删除Python中缺失值过多的列

python - pandas groupby 后缺少列

python - 如何在 Python 的多索引数据框中导入多个 Excel 工作表?