创建新的数据框列

u31889

我的数据框如下所示:

df <- data.frame(INFO=c("A;B;C", "B;A;C"), METRICS=c("1;2;3", "4;5;6"))
df
   INFO METRICS
1 A;B;C   1;2;3
2 B;A;C   4;5;6

我试图使用捕获每一行的'A'值apply()并将结果向量存储在原始数据帧的新列中:

df$M1 <- apply(
   df,
   1,
   function(x){
      info <- unlist(strsplit(x[1], ";"))
      metric <- unlist(strsplit(x[2], ";"))
      for(i in 1:3){
         ifelse(
            info[i]=="A", 
            metric[i],
            "."
         )
      }
   }
)

为了得到以下结果:

df
   INFO METRICS M1
1 A;B;C   1;2;3  1
2 B;A;C   4;5;6  5

但是不会创建新列。

罗纳克·沙

我们可以将字符串分割开";"并用于mapply获取METRICSwhere的对应值INFO == "A"

df$M1 <- mapply(function(x, y) y[x == "A"], strsplit(df$INFO, ";"),
                                            strsplit(df$METRICS, ";"))
df

#   INFO METRICS M1
#1 A;B;C   1;2;3  1
#2 B;A;C   4;5;6  5

数据

确保将数据读取为字符而不是因素。

df <- data.frame(INFO=c("A;B;C", "B;A;C"), METRICS=c("1;2;3", "4;5;6"),
                  stringsAsFactors = FALSE)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

拆分数据框以创建新列

来自分类Dev

在熊猫数据框中创建新列

来自分类Dev

创建一个新列,但创建数据框的副本

来自分类Dev

从多个列中创建虚拟变量并创建新的数据框

来自分类Dev

无法根据数据框中提供的数据创建新列

来自分类Dev

数据框基于其他列创建新列

来自分类Dev

R数据框,按名称组合列并创建新列

来自分类Dev

从Pandas数据框中的其他列创建新列

来自分类Dev

基于数据框中的两列创建新列

来自分类Dev

计算数据框中的元素并创建新的列

来自分类Dev

在多索引熊猫数据框中创建多个新列

来自分类Dev

创建新列并放入条件值熊猫数据框

来自分类Dev

根据过去的值创建新的数据框列

来自分类Dev

使用Fuzzywuzzy在数据框中创建新列

来自分类Dev

熊猫:仅从某些列创建新的数据框

来自分类Dev

str。包含在pandas数据框中创建新列

来自分类Dev

从返回元组的函数创建新的pandas数据框列

来自分类Dev

Python根据不同的行创建新的数据框列

来自分类Dev

根据条件在数据框中创建新列

来自分类Dev

如何根据条件在数据框中创建新列

来自分类Dev

熊猫if-elif语句未创建新的数据框列

来自分类Dev

以迭代方式在数据框中创建多个新列

来自分类Dev

使用dfList在多个数据框中创建新列

来自分类Dev

如何在熊猫数据框中创建新列

来自分类Dev

根据条件根据列的总和值创建新的数据框

来自分类Dev

在Pandas中切片列以创建新的数据框

来自分类Dev

遍历数据框列表以创建新列

来自分类Dev

通过创建新列将熊猫数据框分组

来自分类Dev

根据规则熊猫数据框创建新列