当前位置: 首页 > 知识库问答 >
问题:

基于R中的两个因子级别插入行

严宏旷
2023-03-14

我有一个包含四个变量的数据帧(df),其中两个变量是因子,var1和var2。var1和var2各有三个电平。

数据帧中不存在var1和var2的某些组合,例如var1级别“慢速”没有var2级别“4或5”。

我发现在最好的情况下添加行是很棘手的,并且不知道如何实现这一点。任何帮助都将不胜感激!

# Starting point 
df <- data.frame(var1=c("fast","fast","fast","medium","slow","slow"),
                 var2=c("1 or 2","3","4 or 5","3","1 or 2","3"),
                 var3_freq=c(22,56,22,100,36,64),
                 var4_n=c(10,26,10,2,5,9))
df$var1 <- as.factor(df$var1)
df$var2 <- as.factor(df$var2)

# Goal
dfgoal <- data.frame(var1=c("1 or 2","3","4 or 5","1 or 2","3","4 or 5","1 or 2","3","4 or 5"),
                 var2=c("fast","fast","fast","medium","medium","medium","slow","slow","slow"),
                 var3_freq=c(22,56,22,0,100,0,36,64,0),
                 var4_n=c(10,26,10,0,2,0,5,9,0))

共有1个答案

方昊英
2023-03-14

无需加载外部库的简单解决方案:

    var1   var2 var3_freq var4_n
1   fast 1 or 2        22     10
2   fast      3        56     26
3   fast 4 or 5        22     10
4 medium      3       100      2
5   slow 1 or 2        36      5
6   slow      3        64      9
7 medium 1 or 2         0      0
8 medium 4 or 5         0      0
9   slow 4 or 5         0      0
new <- data.frame(var1 = c("medium", "medium", "slow"),
                  var2 = c("1 or 2", "4 or 5", "4 or 5"),
                  var3_freq = c(0, 0, 0),
                  var4_n = c(0, 0, 0))
rbind(df, new)
df <- data.frame(var1=c("fast","fast","fast","medium","slow","slow"),
                 var2=c("1 or 2","3","4 or 5","3","1 or 2","3"),
                 var3_freq=c(22,56,22,100,36,64),
                 var4_n=c(10,26,10,2,5,9))
df$var1 <- as.factor(df$var1)
df$var2 <- as.factor(df$var2)    
 类似资料:
  • 本文向大家介绍如何为R数据帧中的因子变量的每个级别选择第一行?,包括了如何为R数据帧中的因子变量的每个级别选择第一行?的使用技巧和注意事项,需要的朋友参考一下 行比较是数据分析的重要组成部分,有时我们将变量与变量进行比较,将值与值进行比较,将案例或行与另一案例或行进行比较,甚至将完整的数据集与另一数据集进行比较。这是检查数据值的准确性及其一致性所必需的,因此我们必须这样做。为此,我们需要选择所需的

  • 我有两个具有相同列的表,这些表没有唯一的列。假设列为Col1、Col2、Col3和Col4。表是T1和T2。 我要做的是插入从T2到T1的所有行,其中Col1 比如Col1=“APPLE”和Col2=“2019”。如果一行在T2中包含Col1=“APPLE”和Col2=2019,我不想将其插入T1,而如果一行包含Col1=“APPLE”和Col2=2020,我想将其插入T1。 我正在努力找到最简单

  • 主要内容:在数据帧中的因子,改变级别顺序,产生因子级别因子是用于对数据进行分类并将其存储为级别的数据对象。它们可以存储字符串和整数。 它们在具有有限数量的唯一值的列中很有用。 像“男”,“女”,“真”,“假”等。它们在统计建模的数据分析中很有用。 因子可通过函数使用向量作为输入来创建。 示例 当我们执行上述代码时,会产生以下结果 - 在数据帧中的因子 在使用一列文本数据创建数据帧时,R将文本列视为分类数据并在其上创建因子。参考以下示例代码 - 当我们

  • 我有22个矩阵,行数相等(即691个),列数不同(即22-25个)。我必须在每个矩阵中添加对应于同一行、同一列的值,从而得到一个维度为691*25的矩阵。 每个矩阵都是带有数值的双矩阵。如何将这两个矩阵相加,得到第三个矩阵的维数为691*25。因为fullanno2短三列,所以对于这些列,生成的矩阵将只有来自第一个矩阵的值。 我的方法是:使用colname的setdiff来获取较小矩阵中不存在的列

  • 我觉得我应该能在聚合函数上做到这一点,但我不知道如何告诉它,看一个变量的计数和。我知道我有点不知所措,但有人能帮我解决这个问题吗?

  • 我想在我的数据框中使用函数 relevel() 和 reorder()。我了解 relevel 的工作原理,但我不明白为什么我没有看到 data.frame 中级别的变化。例如,假设我有虹膜数据集 由reprex软件包(v2.0.1)于2022年4月12日创建 我可以使用此函数更改级别的顺序,或者在dplyr中使用此函数: 由reprex软件包(v2.0.1)于2022-04-12年创建。我没有看