Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何替换数据框中列的一部分的值?_R_Dataframe_Dplyr - Fatal编程技术网

R 如何替换数据框中列的一部分的值?

R 如何替换数据框中列的一部分的值?,r,dataframe,dplyr,R,Dataframe,Dplyr,这看起来像是一个应该在某处或其他地方问的问题,但我就是找不到,所以我还是会问 我有一个csv文件,需要清理。我使用read\u csv将其放入R。我们称之为df 现在,列C存储人员或公司名称。大多数数据点都很好,但由于一些无法想象的原因,其中一小部分没有正确解码(在生成此csv文件时),并且仍以base64格式存储,如下所示:[b64]5b+r5LmQ56aPMjAxMQ==[/b64] 然后我构造了一个函数来解码它: MyDecode <- function(x) iconv(rawTo

这看起来像是一个应该在某处或其他地方问的问题,但我就是找不到,所以我还是会问

我有一个csv文件,需要清理。我使用
read\u csv
将其放入R。我们称之为
df

现在,列
C
存储人员或公司名称。大多数数据点都很好,但由于一些无法想象的原因,其中一小部分没有正确解码(在生成此csv文件时),并且仍以base64格式存储,如下所示:
[b64]5b+r5LmQ56aPMjAxMQ==[/b64]

然后我构造了一个函数来解码它:

MyDecode <- function(x) iconv(rawToChar(caTools::base64decode(x,"raw")),
                              from="utf-8", to = "gb18030")

MyDecode将
Vectorize
d版本与
ifelse
一起使用,类似于
mutate(fixed=ifelse(grepl(^\[b64],丑陋列))、向量化的\u MyDecode(丑陋列)、丑陋列)
。这将仅将my_decode函数的矢量化版本应用于需要它的列的子集,并按原样返回其余部分。或者,您可以对
grepl(“^\[b64”,丑陋的列)进行编码检查
在my_decode函数中,如果为false,则返回未触及的字符串。@Gregor我做了
MyDecodeV是吗?你的意思是正确的,但我不会这么说——你可能过度概括了。Mutate用于添加列(即向量)因此,
mutate
中的任何表达式都需要返回适当长度的向量。summary将列压缩为单行,因此,
summary
中的任何表达式都需要返回长度为一的值。
select
rename
,并不是真正的向量化,
filter
需要向量它类似于
mutate
,但它们需要是布尔值。因此,我想如果你用“mutate”替换“dplyr动词”,我会同意。也许
总结
也取决于你如何定义“矢量化”。使用
矢量化
d版本和
ifelse
,类似于
mutate(fixed=ifelse(grepl(\\[b64],丑陋的列)),矢量化的_mydecode(丑陋的_列),丑陋的_列)
。这将仅将my_decode函数的矢量化版本应用于需要它的列的子集,并按原样返回其余部分。或者,您可以对
grepl(^\\[b64],丑陋的_列)进行代码检查
在my_decode函数中,如果为false,则返回未触及的字符串。@Gregor我做了
MyDecodeV是吗?你的意思是正确的,但我不会这么说——你可能过度概括了。Mutate用于添加列(即向量)因此,
mutate
中的任何表达式都需要返回适当长度的向量。summary将列压缩为单行,因此,
summary
中的任何表达式都需要返回长度为一的值。
select
rename
,并不是真正的向量化,
filter
需要向量它类似于
mutate
,但它们必须是布尔值。因此,我想如果您将“dplyr动词”替换为“mutate”,我会同意。也许
也总结了
,这取决于您如何定义“向量化”。