在R中扩展ROWWISE的值

发布于 2025-02-13 09:12:04 字数 854 浏览 0 评论 0原文

我有一个从Excel导入的数据集,其中包含类似于以下示例的格式的数据:

var1 <- c("F3.1", NA, NA, NA, NA, "F3.2", NA, NA, NA, "F4.2", "F4.3", NA, NA)
var2 <- letters[1:13]
df <- data.frame(var1, var2)
df

   var1 var2
1  F3.1    a
2  <NA>    b
3  <NA>    c
4  <NA>    d
5  <NA>    e
6  F3.2    f
7  <NA>    g
8  <NA>    h
9  <NA>    i
10 F4.2    j
11 F4.3    k
12 <NA>    l
13 <NA>    m

我想扩展var1 rowwise,因此最终输出看起来像这样:

   var1 var2
1  F3.1    a
2  F3.1    b
3  F3.1    c
4  F3.1    d
5  F3.1    e
6  F3.2    f
7  F3.2    g
8  F3.2    h
9  F3.2    i
10 F4.2    j
11 F4.3    k
12 F4.3    l
13 F4.3    m

我尝试用if(IS)编写某种循环(。 na(var1)){复制上一个值} else {var1},但尚未弄清楚。我还研究了Expand(),但发现很难应用于这种情况,因为我没有其他变量可以进行分组。 最后:示例只是一个示例;我正在以这种布局的形式导入很多擅长的情况,因此我正在寻找一种尽可能自动执行此操作的方法。

I have a dataset imported from Excel that contains data in a format similar to the example below:

var1 <- c("F3.1", NA, NA, NA, NA, "F3.2", NA, NA, NA, "F4.2", "F4.3", NA, NA)
var2 <- letters[1:13]
df <- data.frame(var1, var2)
df

   var1 var2
1  F3.1    a
2  <NA>    b
3  <NA>    c
4  <NA>    d
5  <NA>    e
6  F3.2    f
7  <NA>    g
8  <NA>    h
9  <NA>    i
10 F4.2    j
11 F4.3    k
12 <NA>    l
13 <NA>    m

I would like to expand var1 rowwise, so the final output would look like this:

   var1 var2
1  F3.1    a
2  F3.1    b
3  F3.1    c
4  F3.1    d
5  F3.1    e
6  F3.2    f
7  F3.2    g
8  F3.2    h
9  F3.2    i
10 F4.2    j
11 F4.3    k
12 F4.3    l
13 F4.3    m

I've tried writing some sort of loop with if (is.na(var1)) {copy previous value} else {var1}, but haven't figured it out yet. I've also looked at expand(), but found it hard to apply to this case, because I have no other variable to group on.
Lastly: The example is just an example; I'm importing lots of Excels with this layout, so I'm looking for a way to execute this as automatic as possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无悔心 2025-02-20 09:12:04
library(tidyr)

df %>% fill(var1)

将完成这项工作。参见在这里

library(tidyr)

df %>% fill(var1)

will do the job. See here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文