首先计算行号,然后按条件插入新行

时间:2018-05-30 04:24:38

标签: r if-statement dataframe insert

我需要在should be used this code. $dir = getcwd() . '/var/uploads/pages/'; $pageName = $dir . $_POST['pageName']; if(mkdir($pageName, 0777, true)){ $filepathHTML = $pageName.basename($_FILES['pageHTMLUpload'['name']]); $filepathPHP = $pageName.basename($_FILES['pagePHPUpload']['name']); if(move_uploaded_file($_FILES['pageHTMLUpload']['tmp_name'], $filepathHTML)) { if(move_uploaded_file($_FILES['pagePHPUpload']['tmp_name'], $filepathPHP )) { $stmt = $conn->prepare("INSERT INTO pages (title, htmlDir, phpDir) VALUES (?,?,?)"); $stmt->bind_param($pageName, $filepathHTML, $filepathPHP); $stmt->execute(); } else{ echo "Error -phpUpload"; } } else{ echo "Error -htmlUpload"; } } else{ echo "Error -pagename"; } 函数之后先计算行数,如果行号<1,则将新行添加到6行。 6.

我的df有三个变量(group_by):v1,v2,v3v1 = group name(即1,2,3,4,5,6)。在新行中,我想重复v2 = row number值,v1继续广告行号,v2

示例df

v3 = NA

预期产出

v1    v2    v3
1     1     79
1     2     32
1     3     53
1     4     33
1     5     76
1     6     11
2     1     32
2     2     42
2     3     44
2     4     12
3     1     22
3     2     12
3     3     12
3     4     67
3     5     32

我尝试先按v1 v2 v3 1 1 79 1 2 32 1 3 53 1 4 33 1 5 76 1 6 11 2 1 32 2 2 42 2 3 44 2 4 12 2 5 NA #insert 2 6 NA #insert 3 1 22 3 2 12 3 3 12 3 4 67 3 5 32 3 6 NA #insert 计算行号,但我不知道是否可以或如何使用pip添加此dplyr条件。或者还有其他更容易的功能吗?

我的代码

if else

谢谢!

2 个答案:

答案 0 :(得分:2)

我们可以使用complete

library(tidyverse)
complete(df1, v1, v2)
# A tibble: 18 x 3
#      v1    v2    v3
#   <int> <int> <int>
# 1     1     1    79
# 2     1     2    32
# 3     1     3    53
# 4     1     4    33
# 5     1     5    76
# 6     1     6    11
# 7     2     1    32
# 8     2     2    42
# 9     2     3    44
#10     2     4    12
#11     2     5    NA
#12     2     6    NA
#13     3     1    22
#14     3     2    12
#15     3     3    12
#16     3     4    67
#17     3     5    32
#18     3     6    NA

答案 1 :(得分:1)

以下是使用merge进行此操作的方法。

df <- read.table(text = 
                "v1    v2    v3
                 1     1     79
                 1     2     32
                 1     3     53
                 1     4     33
                 1     5     76
                 1     6     11
                 2     1     32
                 2     2     42
                 2     3     44
                 2     4     12
                 3     1     22
                 3     2     12
                 3     3     12
                 3     4     67
                 3     5     32", header = T)
toMerge <- data.frame(v1 = rep(1:3, each = 6), v2 = rep(1:6, times = 3))
m <- merge(toMerge, df, by = c("v1", "v2"), all.x = T)
m

   v1 v2 v3
1   1  1 79
2   1  2 32
3   1  3 53
4   1  4 33
5   1  5 76
6   1  6 11
7   2  1 32
8   2  2 42
9   2  3 44
10  2  4 12
11  2  5 NA
12  2  6 NA
13  3  1 22
14  3  2 12
15  3  3 12
16  3  4 67
17  3  5 32
18  3  6 NA