将矩阵的每n行移动到R中的新列

时间:2018-06-20 15:16:22

标签: r matrix

我的数据结构如下

func isValidPhone(phone: String) -> Bool {

      let phoneRegex = "^[0-9]{6,14}$";
      let valid = NSPredicate(format: "SELF MATCHES %@", phoneRegex).evaluate(with: phone)
      return valid
   }

func isValidEmail(candidate: String) -> Bool {

       let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
       var valid = NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: candidate)
        if valid {
            valid = !candidate.contains("..")
        }
        return valid
  }

,我想将其转换为类似的结构,以便每隔4行创建一个新列,并将这4行移至新列。

stat_names values

stat1       0.3
stat2       0.5

stat_x      ...


stat 16     0.8

其中“ A”,“ B”,“ C”,“ D”是用户定义的先验列名向量。

尽管这在Excel中是手工完成的,但我想在R中使用可以跨多个输入进行迭代的脚本来实现。

1 个答案:

答案 0 :(得分:1)

在这里,我将数据帧转换为矩阵,然后返回到数据帧以产生所需的结果。

# Dummy data frame
df <- data.frame(stat_names = paste("stat", 1:16, sep = " "),
                 values = runif(16))

# Cast as matrix with 4 rows and then as a data frame
df <- as.data.frame(matrix(df$stat_names, nrow = 4))

# Rename columns
names(df) <- LETTERS[1:ncol(df)]

#        A      B       C       D
# 1 stat 1 stat 5  stat 9 stat 13
# 2 stat 2 stat 6 stat 10 stat 14
# 3 stat 3 stat 7 stat 11 stat 15
# 4 stat 4 stat 8 stat 12 stat 16

如果您实际上希望使用values这种格式,请将df$stat_names更改为df$values