R 如何使用条件(ifelse)在数据帧中创建新行?

R 如何使用条件(ifelse)在数据帧中创建新行?,r,conditional-statements,plyr,R,Conditional Statements,Plyr,示例:给定一个包含 df1 = data.frame( users=c("1", "1", "2", "2"), projects=c("100", "101", "102", "103"), from=c("0", "111", "0", "106")) | users | projects | from | |-------|----------|------| | 1 | 100 | 0 | | 1 | 101 | 111 | |

示例:给定一个包含

 df1 = data.frame(
 users=c("1", "1", "2", "2"), 
 projects=c("100", "101", "102", "103"), 
 from=c("0", "111", "0", "106"))

| users | projects | from |
|-------|----------|------|
|     1 |      100 |    0 |
|     1 |      101 |  111 |
|     2 |      102 |    0 |
|     2 |      103 |  106 |
当“from”列为非零时,我想在dataframe中创建新行,新行将包含相同的用户和project=from值

那我应该

df2 = data.frame(
users=c("1", "1", "1", "2", "2", "2"), 
projects=c("100", "101", "111", "102", "103", "106"), 
from=c("0", "111", "111","0", "106", "106"))

| users | projects | from |
|-------|----------|------|
|     1 |      100 |    0 |
|     1 |      101 |  111 |
|     1 |      111 |  111 |
|     2 |      102 |    0 |
|     2 |      103 |  106 |
|     2 |      106 |  106 |
我曾想过在ifelse条件下使用rbind,但我做不到


执行此数据帧的推荐方法是什么?谢谢。

创建一个包含新行的新数据框,然后将两个数据框绑定在一起

library('tidyverse')

extras <- df1 %>%
  filter(from != 0) %>%
  mutate(projects = from)

bind_rows(df1, extras) %>%
  arrange(users, projects)
#>   users projects from
#> 1     1      100    0
#> 2     1      101  111
#> 3     1      111  111
#> 4     2      102    0
#> 5     2      103  106
#> 6     2      106  106
library('tidyverse'))
额外费用%
过滤器(从!=0)%>%
变异(项目=源)
绑定行(df1,附加项)%>%
安排(用户、项目)
#>来自的用户项目
#> 1     1      100    0
#> 2     1      101  111
#> 3     1      111  111
#> 4     2      102    0
#> 5     2      103  106
#> 6     2      106  106

谢谢!我想我需要使用rbind和ifelse,但这样就行了。