我有两个大小不等的数据帧,df1有一个逗号分隔的值。
df1 <- data.frame(col1=c("id1", "id2", "id3", "id4", "id5", "id6", "id7"),
col2=c("1,2", "2", "1,2,3", "1,2,3,4,5", "4", "2", "1"))
Output of df1
-----------------
col1 col2
1 id1 1,2
2 id2 2
3 id3 1,2,3
4 id4 1,2,3,4,5
5 id5 4
6 id6 2
7 id7 1
df2 <- data.frame(col1=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16),
col2=c("id1", "id1", "id1", "id1", "id1", "id1", "id2", "id3", "id3", "id4", "id4", "id4", "id5", "id6", "id7", "id7"),
col3=c(1, 1, 1, 2, 3, 4, 2, 4, 2, 1, 4, 5, 1, 1, 2, 3))
df2$newCol <- 0
Output of df2
---------------
col1 col2 col3 newCol
1 1 id1 1 0
2 2 id1 1 0
3 3 id1 1 0
4 4 id1 2 0
5 5 id1 3 0
6 6 id1 4 0
7 7 id2 2 0
8 8 id3 4 0
9 9 id3 2 0
10 10 id4 1 0
11 11 id4 4 0
12 12 id4 5 0
13 13 id5 1 0
14 14 id6 1 0
15 15 id7 2 0
16 16 id7 3 0
如果以下条件满足df2$col2==df1$col1和df2$col3%中%df2$col2中的值,并且其余的值应该为0,那么我想用1更新'newCol'行。
这是我期望的输出
col1 col2 col3 newCol
1 1 id1 1 1
2 2 id1 1 1
3 3 id1 1 1
4 4 id1 2 1
5 5 id1 3 0
6 6 id1 4 0
7 7 id2 2 1
8 8 id3 4 0
9 9 id3 2 1
10 10 id4 1 1
11 11 id4 4 1
12 12 id4 5 1
13 13 id5 1 0
14 14 id6 1 0
15 15 id7 2 0
16 16 id7 3 0
我试着在自己的行中使用最新的df1值,并使用merge,但它似乎没有按预期工作。
任何有效实现这一目标的建议都将不胜感激。
您可以使用grepl来检测向量是否在col2
中。这将是在合并
ing数据之后
transform(merge(df2,df1,by.x="col2",by.y="col1"),newcol = +Vectorize(grepl)(col3,col2.y))[-4]
col2 col1 col3 newcol
1 id1 1 1 1
2 id1 2 1 1
3 id1 3 1 1
4 id1 4 2 1
5 id1 5 3 0
6 id1 6 4 0
7 id2 7 2 1
8 id3 8 4 0
9 id3 9 2 1
10 id4 10 1 1
11 id4 11 4 1
12 id4 12 5 1
13 id5 13 1 0
14 id6 14 1 0
15 id7 15 2 0
16 id7 16 3 0
问题内容: 我正在将SQLAlchemy与python结合使用,并且我想更新等于此查询的表中的特定行: 我通过sql alchemy编写了此代码,但无法正常工作: 返回此错误: 我该怎么做? 问题答案: 通常,您不使用,而是设置属性:
通过特定的标签/键从整个JSON中删除任意值的简单方法是什么?我的JSON可能具有任意深度,因此按标签删除应该递归完成。 并且我想删除所有带有标签的元素,以便最终结果如下所示: 使用/会产生意想不到的结果(尤其是当有嵌套对象要删除时),因此它必须是一个支持JSON的实用工具,如jq或类似工具。
我需要国家列表,其中没有城市或地方,这意味着所有的城市或地方的国家是空的或空的。不要国家,如果国家的一个记录有城市或地方价值。
问题内容: 我一直在尝试更新特定行已有一段时间了,看来有两种方法可以做到这一点。根据我的阅读和尝试,你可以使用: 方法 或者: 方法。 (让我知道这是否不正确,因为我是android新手,还是SQL新手。) 因此,让我了解我的实际代码。 我正在努力做到这一点: 更新主键()等于1的Field1,Field2和Field3。 Eclipse在“更新”一词的正下方给了我一条红线,并给出了以下解释: S
我有一个数据记录就像。data1=ID A B C D O T1 1 3 3 2 1 T2 2 4 2 3 3 0 T3 4 1 1 4 0 T4 5 2 4 5 0 T5 3 5 5 1 1 而其他数据是。 怎么做??
我想获取一个使用。与相比,仅锁定指定表中的行,并且连接的行不会被阻塞。但是,当我尝试使用以下代码段使用ecto执行此操作时,它失败了。 原因是ecto为使用别名,例如,这意味着我还必须在lock表达式中使用别名才能使其正常工作。 使用别名看起来不是一种正确的方法。还有其他方法可以让它工作吗?