gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:48:43 25 4
gpt4 key购买 nike

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

    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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com